java - 无法写入 Android 上的外部存储

标签 java android io

我看到很多人问同样的问题,但发布的解决方案都没有帮助我。

我正在尝试将(二进制)文件从我的 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/

相关文章:

java - 如何处理 REST 服务中的无效参数?

android - 在一个 Activity 中的不同 fragment 上创建不同的工具栏

Java 创建长字符串

android - 错误的列表项被删除而不是使用自定义列表适配器选择的项目

java - 同时逐行读取两个文本文件-java

Java 将负载平衡到许多 JVM 中

java - 如何在 apk 中列出所有 3rd 方 jar?

java - 错误 : Could not find or load main class org. apache.ignite.startup.cmdline

java - Eclipse 的环境变量

c - 从文件中读取不定数量的整数