2

我尝试创建一个目录并使用以下代码:

boolean success = true;
String rootDirectory = Environment.getExternalStorageDirectory().toString();
folder = new File(rootDirectory, "Directory");
if(!(folder.exists())) {
     success = folder.mkdirs();
} else {

}

if(success) {
   Toast.makeText(getActivity().getApplicationContext(), "DIR created", Toast.LENGTH_SHORT).show();     
} else {
     Toast.makeText(getActivity().getApplicationContext(), "DIR not created successfully", Toast.LENGTH_SHORT).show();
}

我还搜索了该文件夹,如果它已创建,则没有。

授予权限:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

我还尝试在运行时请求许可,似乎该应用程序已获得许可,因此这不是问题。

几个月前,我创建了另一个应用程序并使用了相同的代码和相同的 SDK 版本,但它仍然不适用于这个应用程序。我得到“未成功创建目录”,我不知道为什么,请帮我弄清楚为什么我无法创建目录。

4

4 回答 4

5

对于 Android 10+ 来说,要求Manifest.permission.WRITE_EXTERNAL_STORAGE是不够的。现在,您还可以在清单中启用对旧版外部存储的访问:

<application
    android:requestLegacyExternalStorage="true"
    ...
于 2020-08-15T07:26:58.030 回答
1

使用下面的代码

File directory = new File(Environment.getExternalStorageDirectory() + java.io.File.separator +"Directory");
if (!directory.exists())
        Toast.makeText(getActivity(), 
          (directory.mkdirs() ? "Directory has been created" : "Directory not created"),
        Toast.LENGTH_SHORT).show(); 
else
     Toast.makeText(getActivity(), "Directory exists", Toast.LENGTH_SHORT).show();

对于 Android API 23 (Marshmallow) 及更高版本,我们必须允许危险权限,否则我们的代码将无法按预期工作。

于 2016-12-06T08:13:54.737 回答
1

在新的 Android 更新API 30中,您只能在应用本地文件中写入app-specific files

File dir = new File(context.getFilesDir(), "YOUR_DIR");
dir.mkdirs();

或在您的应用程序的外部存储中Android/data

final File dir = new File(myContext.getExternalFilesDir("FolderName"),"YOUR_DIR");

更新

这个答案提供了另一个解决方案https://stackoverflow.com/a/65744517/8195076

更新

另一种方法是授予此权限manifest

<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" />

喜欢这个答案https://stackoverflow.com/a/66968986/8195076

于 2021-04-16T00:55:19.157 回答
0
String path = Environment.getExternalStorageDirectory().toString() + "/" +"MyDir";
File dir = new File(path);
if(!dir.exists())
{
    dir.mkdirs()
}
于 2016-12-06T08:29:01.177 回答