【问题标题】:Android fails to mkdirs()Android 无法 mkdirs()
【发布时间】:2015-12-20 12:53:25
【问题描述】:

我知道已经有人问过类似的问题,但我已经尝试做我在那里读到的内容。

我正在编写一个需要访问和创建一些文件的应用程序,在我的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>

【问题讨论】:

  • 您将它们放在 AndroidManifest 中的什么位置?你能给我们看一下完整的清单吗?
  • 标签中,无论如何我已经在问题中添加了它。另外:为什么这个问题被低估了?它有什么问题?

标签: java android storage android-file


【解决方案1】:

尝试以下构造函数,而不是自己编写路径

File external = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), "MyFolder");

然后调用mkdir() 方法。
您不需要 READ_EXTERNAL_STORAGE 权限,因为 WRITE_EXTERNAL_STORAGE 隐式使用它。

【讨论】:

  • 试过了,但它给了我同样的问题。也感谢您的许可信息。
【解决方案2】:

试试这个:

    File root = Environment.getExternalStorageDirectory();
    String dirPath = root.toString() +  "/Pictures/Your folder/";
    File dir = new File(dirPath);

    if (!dir.exists()) {
       dir.mkdirs();
    }

【讨论】:

    【解决方案3】:

    首先让我原谅,我明白我的问题有多愚蠢:我是 Android 编程新手,所以...

    无论如何,代码没有任何问题,但我在 AndroidStudio 模拟器上运行它,我必须在 Setting->App 中向应用授予权限> 菜单。

    【讨论】:

      猜你喜欢
      • 2019-06-11
      • 2017-04-20
      • 2013-01-17
      • 2018-09-27
      • 2015-12-22
      • 1970-01-01
      • 2015-06-04
      • 1970-01-01
      • 2017-09-22
      相关资源
      最近更新 更多