我正在尝试创建一个目录和文件,以便存储从Internet下载的文件。但是,我无法在外部公共存储中创建目录和文件。如果我向外部专用存储器(应用程序的特定存储位置)写入数据,我完全可以这样做。
代码如下:

    String storageDirectory = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES).getAbsolutePath();
    System.out.println(storageDirectory);
    File mediaDir = new File(storageDirectory);
    if (!mediaDir.exists()) {
        System.out.println(mediaDir.mkdirs());
        System.out.println(mediaDir.isDirectory());
    }
    File mediaFile = new File(storageDirectory, "boga.jpg");
    try {
        mediaFile.createNewFile();
    } catch (IOException e) {
        e.printStackTrace();
    }

上述代码导致:
09-13 05:33:45.258 5867-5867/?输入/系统输出:存储/0ced-0f09/图片
09-13 05:33:45.260 5867-5867/?输入/系统输出:错误
09-13 05:33:45.260 5867-5867/?输入/系统输出:错误
IOException(没有这样的文件或目录):
09-13 05:33:45.260 5867-5867/?w/system.err::java.io.ioexception:打开失败:enoent(没有这样的文件或目录)
09-13 05:33:45.260 5867-5867/?W./Surviv.Err*在java. Io.Fr.CytEnWeFrfile(文件.java:939)
09-13 05:33:45.260 5867-5867/?W/So.Err.com。示例。TababyT.Tut1App.MaultActudi.OnCuto(MaultActudia. Java:78)
这是我的清单:
<?xml version="1.0" encoding="utf-8"?>

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name=".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>

有什么问题吗?

最佳答案

事实证明,我完全有能力在一个真正的智能手机设备(华为p8 api级别21,版本5.0)上写入外部存储目录。但不是到模拟器的外部存储器,即使存储器是完全可用的,并且可以从模拟器内部浏览。
这也有助于我解决实际设备上的外部存储问题:https://stackoverflow.com/a/6311955/5330055
我已经不再迫切需要一个解决方案,但它会很高兴知道什么是模拟器的错误。

07-26 09:40