为什么我不能在Environment.DIRECTORY_PICTURES内创建一个目录



这是我的代码

File selfieLocation = new File(getExternalFilesDir(Environment.DIRECTORY_PICTURES),
               "Daily Selfies");
boolean isDirectory = false;
if(!selfieLocation.isDirectory()) {
        //Creates directory named by this file
        selfieLocation.mkdir();
        isDirectory = selfieLocation.isDirectory();
 }
 //array of strings 
 for(String selfiePath: selfieLocation.list()) {
        selfies.add(selfiePath);
 }

基本上,我正在尝试做的是在标准目录中创建自己的可自定义目录,以放置用户可用的图片。

我查看了相关线程,看到了这个,Android:无法在默认图片文件夹中创建目录。但是,我确保我有一个调用getExternal....,而不仅仅是将Environment.DIRECTORY_PICTURES作为参数。我还 http://developer.android.com/guide/topics/data/data-storage.html#filesExternal 查看了这里,发现我有正确的方法调用/格式在外部存储器中创建可自定义的文件夹。文档示例是

File file = new File(Environment.getExternalStoragePublicDirectory(
        Environment.DIRECTORY_PICTURES), albumName);
if (!file.mkdirs()) {
    Log.e(LOG_TAG, "Directory not created");
}

我逐步浏览了我的代码,发现即使在调用 selfieLocation.mkdir() 之后,局部变量 isDirectory 也保持在 false。有谁知道为什么无法创建此目录?

尝试使用 File#mkdirs() 创建目录,而不是 File#mkdir() 。后者假设所有父目录都已就位,因此如果其任何父目录不存在,它不会创建目录。
另外,请查看您在 AndroidManifest.xml 中的权限。您需要以下权限才能读取/写入外部存储上的内容:

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

目前不需要android.permission.READ_EXTERNAL_STORAGE,但它将在Android的未来版本中提供。

最新更新