我知道已经提出了类似的问题,但我已经尝试过我在那里读到的内容。
我正在撰写需要访问并创建一些文件的应用,并且在我的onCreate()
方法中,我调用了directoryMaker()
方法:
static final String externalPath = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES).getAbsolutePath()+"/MyFolder"; //This is a global variable
private void directoryMaker (){
if(externalIsMounted()){
File external = new File(externalPath);
if(!external.exists()){
if(external.mkdirs()){
Log.i("GalleryActivity", "Folder created");
}
else{
Log.e("GalleryActivity", "Folder not created");
}
}
}
}
private boolean externalIsMounted(){
return Environment.getExternalStorageState().equals(
Environment.MEDIA_MOUNTED);
}
这是我的清单(至少是相对部分):
<uses-permission
android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
运行它会出现“文件夹未创建”错误:我不知道此时出现了什么问题。
PS:抱歉我的英语不好,不是我的第一语言。
编辑1 整个 AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="course.exercise.dailyselfy"
android:versionCode="1"
android:versionName="1.0">
<uses-permission
android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<application android:allowBackup="true" android:label="@string/app_name"
android:icon="@mipmap/ic_launcher" android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity
android:theme="@android:style/Theme.Holo.Light.DarkActionBar"
android:name="a.b.MyApp.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
答案 0 :(得分:2)
尝试使用以下构造函数,而不是自己编写路径
File external = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), "MyFolder");
然后调用mkdir()
方法
您不需要READ_EXTERNAL_STORAGE
权限,WRITE_EXTERNAL_STORAGE
隐式使用它。
答案 1 :(得分:0)
试试这个:
File root = Environment.getExternalStorageDirectory();
String dirPath = root.toString() + "/Pictures/Your folder/";
File dir = new File(dirPath);
if (!dir.exists()) {
dir.mkdirs();
}