Android无法使用mkdirs()

时间:2015-12-20 12:53:26

标签: java android storage android-file

我知道已经提出了类似的问题,但我已经尝试过我在那里读到的内容。

我正在撰写需要访问并创建一些文件的应用,并且在我的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>

2 个答案:

答案 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();
    }