我正在尝试在Android手机上保存图片,然后在需要时恢复它们。
所以我使用RxJava将这些文件保存并读取到Environment.DITECTORY_PICTURES
文件夹。我的问题是我可以写一个图像(我的rx方法调用onNext
,但不是onError
,调试显示正确的路径,设置证明应用程序数据大小增长),但无法从那里读取。
当我使用正确路径的阅读代码时,它会抛出FileNotFoundException
。当我使用此测试代码时
try {
String path = Environment.DIRECTORY_PICTURES;
Log.d("Files", "Path: " + path);
File directory = new File(path);
File[] files = directory.listFiles();
Log.d("Files", "Size: "+ files.length);
for (int i = 0; i < files.length; i++)
{
Log.d("Files", "FileName:" + files[i].getName());
}
} catch (Exception e) {
e.printStackTrace();
}
它抛出NPE说files
数组是null
。
我已授予读/写外部存储权限。在Android 5和6上测试过,所以我猜也没有关于运行时权限的信息。
从我不知道的Environment
文件夹中读取是否有什么特别之处?
提前感谢您的帮助!
答案 0 :(得分:1)
Environment.DIRECTORY_PICTURES
不是文件系统目录的完整限定路径,您要查找的是通过类并将其作为参数使用。
File directory = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);
Theres描述了更多类型的存储: https://developer.android.com/reference/android/os/Environment.html