Android:可以写但无法从Environment.DIRECTORY_PICTURES读取文件

时间:2018-02-09 19:29:07

标签: android

我正在尝试在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文件夹中读取是否有什么特别之处?

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

Environment.DIRECTORY_PICTURES不是文件系统目录的完整限定路径,您要查找的是通过类并将其作为参数使用。

File directory = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);

Theres描述了更多类型的存储: https://developer.android.com/reference/android/os/Environment.html