【发布时间】:2021-09-19 14:10:21
【问题描述】:
总结
在android的本地或内部存储中创建txt文件时,文件资源管理器无法找到创建的文件。
说明
我有一个应用程序,可以将数组列表存储到 txt 文件中,并在需要时将其读回。
写入文件的函数
....
private void writeToFile(ArrayList<ImageModel> arrayList, String Filename) {
try {
FileOutputStream outputStreamWriter = requireContext().openFileOutput(Filename, Context.MODE_PRIVATE);
ObjectOutputStream oos = new ObjectOutputStream(outputStreamWriter);
Log.d(TAG, "writeToFile: arraylist "+arrayList.size());
oos.writeObject(arrayList);
oos.close();
outputStreamWriter.close();
} catch (IOException e) {
Log.e("Exception", "File write failed: " + e.toString());
}
}
....
读取文件的函数
....
private Object readFromFile(String Filename) {
try {
FileInputStream fis = requireContext().openFileInput(Filename);
ObjectInputStream ois = new ObjectInputStream(fis);
Object object = ois.readObject();
return object;
} catch (Exception ex) {
Log.d(TAG, "readFromFile: exception "+ex.toString());
return null;
}
}
....
所以,到目前为止一切正常。它正在写入和读取文件。但是,我在设备资源管理器或文件管理器中找不到相同的 txt 文件。根据文档,默认情况下openFileOutput 将在Android/data/packagename/files 中创建一个文件。但是,文件资源管理器也没有显示目录。
但是,App 正在写入和读取文件。当我打印readFromFile() 返回的对象大小时,它打印了预期的大小。但是,我在文件资源管理器中找不到该文件。
我尝试过的事情
-
我试图获得读写权限。但是,由于 android 10+ 在
ScopedStorage中不需要任何写入或读取权限,因此没有任何影响。 -
我尝试使用
requireContext().getExternalFilesDir(null)创建目录,它在Android文件夹中创建了files目录,然后我尝试写入和读取该文件。但是,Dir 是空的。 -
我什至尝试在文件资源管理器中检查
show hidden files选项。但是,没有运气。
【问题讨论】:
标签: java android file android-internal-storage