将 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");
}
}
我正在这里做我的第一个 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");
}
}