将 Arraylist 保存到文件 android

Save Arraylist to file android

我正在这里做我的第一个 Android 应用程序,我正在尝试将 ArrayList<String> 写入文件,然后再读回。

这是我编写文件的代码:

(Class 称为保存文件)

public static void writeList(Context c, ArrayList<String> list){
        try{
            FileOutputStream fos = c.openFileOutput("NAME", Context.MODE_PRIVATE);
            ObjectOutputStream os = new ObjectOutputStream(fos);
            os.writeObject(list);
            os.close();
Log.v("MyApp","File has been written");
        }catch(Exception ex){
            ex.printStackTrace();
Log.v("MyApp","File didn't write");
        }
    }

我还没有读取文件的代码。

调用此方法的代码:

//TempArrays.loadCustomTitles() loads a pre-created file that has entities 

    SaveFiles.writeList(getApplicationContext(), TempArrays.loadCustomTitles());

日志显示文件已创建,但我在 phone 上的任何地方都找不到该文件,我确实查看了该文件应在的所有位置,所以要么它被隐藏了,要么更准确地说,尚未创建。

我声明了

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

在我的清单中。

有人知道它有什么问题吗?

尝试在模拟器上测试并使用Android设备监视器搜索文件。

否则,如果您想将文件保存在 SD 卡上,请使用 File sd = Environment.getExternalStorageDirectory() 获取 SD 卡路径。

您无法看到该文件,因为您使用 openFileOutput() 在设备的内部存储目录中创建该文件。此处创建的文件对您的应用程序是私有的,用户甚至看不到。如果用户卸载应用程序,这些文件将自动删除。

要将文件写入外部存储器,请使用 getExternalStoragePublicDirectory() 方法。

// check if sd card is mounted and available for read & write
if (Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())) {
    try {
            // create a file in downloads directory
            FileOutputStream fos =
              new FileOutputStream(
                new File(Environment.getExternalStoragePublicDirectory(
                  Environment.DIRECTORY_DOWNLOADS), "name.ser")
            );
            ObjectOutputStream os = new ObjectOutputStream(fos);
            os.writeObject(list);
            os.close();
            Log.v("MyApp","File has been written");
    } catch(Exception ex) {
            ex.printStackTrace();
            Log.v("MyApp","File didn't write");
    }
}