Mkdirs不在内部存储中创建文件夹(Android)

时间:2014-12-27 00:56:32

标签: android mkdir internal-storage mkdirs

我正在尝试在应用的内部存储中创建一个文件夹,以便我可以下载文件。但它似乎没有用。我一直在寻找一个小时和几小时的解决方案,但我找不到一个,它开始让我crzay。

这是创建文件夹的代码:

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

此代码始终返回“DOES NOT EXIST”:

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>

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

2 个答案:

答案 0 :(得分:7)

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

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

您需要一个Context来调用getFilesDir()。

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

答案 1 :(得分:5)

另一个问题(虽然没有特别导致任何错误)是Android中不存在READ_INTERNAL_STORAGE和WRITE_INTERNAL_STORAGE。它们没有任何效果,应该从清单中删除。