【问题标题】:Mkdirs does not create folder in internal storage (Android)Mkdirs 不在内部存储中创建文件夹 (Android)
【发布时间】:2015-02-24 03:21:24
【问题描述】:

我正在尝试在应用程序的内部存储中创建一个文件夹,以便我可以将文件下载到其中。但这似乎不起作用。我一直在寻找解决方案几个小时,但我找不到一个,它开始让我发疯。

这是创建文件夹的代码:

String intStorageDirectory = Environment.getDataDirectory().toString();
File folder = new File(intStorageDirectory, "testthreepdf");
folder.mkdirs();

此代码总是返回“不存在”:

File f = new File(Environment.getDataDirectory() + "/testthreepdf");
if(f.exists())
{
    Log.i("testApp", f.toString() + "EXISTS");
}
else        {
    Log.i("testApp", f.toString() + " DOES NOT EXIST");
}

这些是android权限:

<uses-permission android:name="android.permission.INTERNET" >
</uses-permission>
<uses-permission android:name="android.permission.WRITE_INTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_INTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" >
</uses-permission>
<uses-permission android:name="android.permission.READ_PHONE_STATE" >
</uses-permission>

有人知道这段代码有什么问题吗?

【问题讨论】:

    标签: android mkdir internal-storage mkdirs


    【解决方案1】:

    Environment.getDataDirectory() 返回所有应用共享的顶级数据文件夹。您不能在那里创建文件夹。要在应用的数据文件夹中创建文件夹,请改用 getFilesDir(),如下所示:

    String intStorageDirectory = getFilesDir().toString();
    File folder = new File(intStorageDirectory, "testthreepdf");
    folder.mkdirs();
    

    你需要一个上下文来调用 getFilesDir()。

    有关 getDataDirectory() 和 getFilesDir() 之间区别的更多信息,请参阅this StackOverflow question

    【讨论】:

      【解决方案2】:

      另一个问题(虽然没有特别引起任何错误)是 READ_INTERNAL_STORAGE 和 WRITE_INTERNAL_STORAGE 在 Android 中不存在。它们没有任何作用,应该从您的清单中删除。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-12-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多