我正在尝试在应用的内部存储中创建一个文件夹,以便我可以下载文件。但它似乎没有用。我一直在寻找一个小时和几小时的解决方案,但我找不到一个,它开始让我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>
有人知道这段代码有什么问题吗?
答案 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。它们没有任何效果,应该从清单中删除。