无法使用 mkdirs() 创建目录 - android
Can't create directory with mkdirs() - android
我尝试创建一个目录并使用以下代码:
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();
}
我也搜索了文件夹如果创建了,有none。
已授予权限:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
我也试过在运行时请求权限,应用程序似乎已经获得了权限,因此不是问题所在。
几个月前我创建了另一个应用程序并使用了相同的代码和相同的 Sdk 版本,但它仍然不适用于这个应用程序。我得到 "DIR not created successfully",我不知道为什么,请帮我弄清楚为什么我不能创建目录。
使用下面的代码
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) 和更大,我们必须允许 dangerous permissions 否则我们的代码将无法正常工作预期的。
String path = Environment.getExternalStorageDirectory().toString() + "/" +"MyDir";
File dir = new File(path);
if(!dir.exists())
{
dir.mkdirs()
}
要求 Manifest.permission.WRITE_EXTERNAL_STORAGE
对 Android 10+ 来说已经不够了。现在您还可以在清单中启用对遗留外部存储的访问权限:
<application
android:requestLegacyExternalStorage="true"
...
在新的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");
更新
这个答案提供了另一种解决方案
更新
另一种方法是在 manifest
中授予此权限
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" />
喜欢这个回答
我尝试创建一个目录并使用以下代码:
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();
}
我也搜索了文件夹如果创建了,有none。
已授予权限:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
我也试过在运行时请求权限,应用程序似乎已经获得了权限,因此不是问题所在。
几个月前我创建了另一个应用程序并使用了相同的代码和相同的 Sdk 版本,但它仍然不适用于这个应用程序。我得到 "DIR not created successfully",我不知道为什么,请帮我弄清楚为什么我不能创建目录。
使用下面的代码
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) 和更大,我们必须允许 dangerous permissions 否则我们的代码将无法正常工作预期的。
String path = Environment.getExternalStorageDirectory().toString() + "/" +"MyDir";
File dir = new File(path);
if(!dir.exists())
{
dir.mkdirs()
}
要求 Manifest.permission.WRITE_EXTERNAL_STORAGE
对 Android 10+ 来说已经不够了。现在您还可以在清单中启用对遗留外部存储的访问权限:
<application
android:requestLegacyExternalStorage="true"
...
在新的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");
更新
这个答案提供了另一种解决方案
更新
另一种方法是在 manifest
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" />
喜欢这个回答