3

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

这是创建文件夹的代码:

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>

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

4

2 回答 2

12

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

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

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

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

于 2014-12-27T01:54:17.977 回答
5

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

于 2015-01-03T04:29:47.980 回答