首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >File.mkdirs()返回false

File.mkdirs()返回false
EN

Stack Overflow用户
提问于 2017-11-15 23:09:37
回答 1查看 736关注 0票数 1

我正在创建一个社交媒体平台,其中已经在设备上的照片可以上传到平台上。我在github上找到了一个示例,这个示例(理论上)可以让我阅读所有jpg/png文件,并在回收视图中显示它们。获取文件的代码如下所示。

代码语言:javascript
复制
private void createImageGallery() {
        File storageDirectory = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);
        mGalleryFolder = new File(storageDirectory, GALLERY_LOCATION);
        Log.i("gallery", "" + (mGalleryFolder != null));
        Log.i("gallery", mGalleryFolder.toString());
        if (!mGalleryFolder.exists()) {
            boolean mk = mGalleryFolder.mkdirs();
            Log.i("gallery", "mkdirs returns " + mk);
        }
    }

第一个log语句等于true,第二个显示字符串。

"/storage/emulated/0/Pictures/hilarity_image"

第三条log语句表示布尔值mk为false。然后文件对象mGalleryFolder被传递到回收视图适配器的构造函数中。调用adapter.getItemCount()时会引发错误。代码如下所示

代码语言:javascript
复制
public int getItemCount() {
        return mGalleryFolder.listFiles().length;
    }

清单中的一些权限如下所示

代码语言:javascript
复制
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.MANAGE_DOCUMENTS" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />

显然,.length()正在对空对象进行调用。我认为这与mkdirs()返回false有关。这个假设正确吗?如何使mkdirs()返回true?记住,期望的结果是在回收视图中显示所有已经在设备上的照片,如果我处理这个问题的方法是错误的,请纠正我。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-11-15 23:36:56

没有创建目录。因此,您不应该继续您的代码,而是停止。

现在,您尝试列出不存在的目录中的文件。难怪listFiles返回null。

对于Android 6+,您需要添加代码来要求用户在清单中确认您请求的权限。

Google用于运行时权限。

添加代码后,可以创建该目录。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47318870

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档