此问题重复或重复三次,但我无法创建文件夹! 我已经在本网站上阅读了其他问题。 我在manifest.xml中添加了权限:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.val.scemo">
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity
android:name=".MainActivity"
android:label="@string/app_name"
android:theme="@style/AppTheme.NoActionBar">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>`
我的代码是这样的(我尝试了所有内容,我已经从本网站的答案中复制了代码):
File logFile = new File(LOG_PATH);
boolean a = false;
a = logFile.getParentFile().mkdirs();
Log.d("Creare: ", "Directory creata? " + a);
///////////////////////////////////////////////////
File folder = new File(Environment.getExternalStorageDirectory() + File.separator + "TollCulator");
boolean success = true;
if (!folder.exists()) {
Log.d("Creare: ", "Riprovo ");
success = folder.mkdir();
Log.d("Creare: ", "Fatto ");
}
if (success) {
Log.d("Creare: ", "Cartella creata!1 ");
// Do something on success
} else {
Log.d("Creare: ", "FAIL1 ");
// Do something else on failure
}
/////////////////////////////////////////////////////
folder = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/Example");
boolean success1 = true;
if (!folder.exists()) {
success1 = folder.mkdirs();
}
if (success1) {
Toast.makeText(getApplicationContext(), "Success", Toast.LENGTH_LONG).show();
Log.d("Creare: ", "Cartella creata!2 ");
} else {
Toast.makeText(getApplicationContext(), "Failure", Toast.LENGTH_LONG).show();
Log.d("Creare: ", "FAIL2 ");
}
全都失败了。我哪里错了? 抱歉我的英文。
答案 0 :(得分:0)
尝试以下方法:
File file = new File (Environment.getExternalStorageDirectory().getPath() + File.separator + "FolderName");
if (!file.isDirectory ()) {
file.mkdirs();
}
答案 1 :(得分:0)
解 我已经将sdk目标的版本从23更改为21。 现在还有另一个错误: 错误:(2)检索项目的父项时出错:找不到与给定名称匹配的资源&#39; android:Widget.Material.Button.Colored&#39;。 在build.grandle中的行: 编译&#39; com.android.support:support-v4:23.0.1&#39; 我已经在sdk 23恢复了我已同步项目并且现在正常工作。
答案 2 :(得分:0)
这是由Android 6.0 Marshmallow中的运行时权限引起的。 WRITE_EXTERNAL_STORAGE 属于危险权限列表。我们需要在每次读/写操作之前检查权限。
int permissionCheck = ContextCompat.checkSelfPermission(this,
Manifest.permission.WRITE_EXTERNAL_STORAGE);
要在运行时请求权限,请检查以下链接: https://developer.android.com/training/permissions/requesting.html
Arpit Patel在这里解释得非常好:https://stackoverflow.com/a/37358852/5460053
并且你没有得到任何例外,因为 File.mkdir()而 File.mkdirs()在失败时不会抛出IOException。
更多详情:https://developer.android.com/reference/java/io/File.html#mkdir()