我正在尝试创建一个目录和文件,以便存储从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
我已经不再迫切需要一个解决方案,但它会很高兴知道什么是模拟器的错误。