我看到很多人问同样的问题,但发布的解决方案都没有帮助我。
我正在尝试将(二进制)文件从我的 Android 应用程序写入外部存储。
我把<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
进入我的 list ,但我仍然无法创建任何文件。我用来创建文件的代码是
File folder = new File(Environment.getExternalStorageDirectory(), SAVE_DIRECTORY);
File toWrite = new File(folder, "save.bin");
if(!toWrite.exists()){
try {
if(!folder.mkdirs())
Log.e("Save", "Failed to create directories for save file!");
toWrite.createNewFile();
} catch (IOException e) {
Log.e("Save", "Failed to create save file! " + e.getMessage());
}
}
调用mkdirs()
失败,createNewFile()
抛出 IOException
(ENOENT,因为目录不存在)
有人知道怎么回事吗?我什至尝试过重启我的设备。我在 Nexus 7 上处于 API 级别 8,如果它有任何不同的话。
最佳答案
首先你应该检查 ExternalStorageState
public static boolean isSDCARDAvailable(){
return Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED);
}
如果这个方法isSDCARDAvailable
返回 true
,然后使用您的代码
添加权限:
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
关于java - 无法写入 Android 上的外部存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11963428/