【问题标题】:Unable to write files on sdcard android emulator无法在 sdcard android 模拟器上写入文件
【发布时间】:2012-10-09 18:11:56
【问题描述】:

我正在尝试在 SD 卡上写入 MIDI 文件。它适用于我的设备,但不适用于模拟器。这是 logCat 上的错误:

12-25 09:18:27.733: W/ExternalStorage(1951): Error create /sdcard/download/test.mid
12-25 09:18:27.733: W/ExternalStorage(1951): java.io.FileNotFoundException: /sdcard/download/test.mid
12-25 09:18:27.733: W/ExternalStorage(1951):    at org.apache.harmony.luni.platform.OSFileSystem.open(OSFileSystem.java:244)
12-25 09:18:27.733: W/ExternalStorage(1951):    at java.io.FileOutputStream.<init>(FileOutputStream.java:97)
12-25 09:18:27.733: W/ExternalStorage(1951):    at java.io.FileOutputStream.<init>(FileOutputStream.java:168)
12-25 09:18:27.733: W/ExternalStorage(1951):    at java.io.FileOutputStream.<init>(FileOutputStream.java:147)

我已经在清单文件中设置了权限,并将路径从“/sdcard/download/test.mid”更改为Environment.getExternalStorageDirectory()+“/download/test.mid”,但仍然不起作用。

仅供参考,我使用Kevin Boone's MidiFile 类,这是我的代码:

String state = Environment.getExternalStorageState();
    if (Environment.MEDIA_MOUNTED.equals(state)) {
        mf.writeToFile(Environment.getExternalStorageDirectory()+"/download/test.mid");
    }

【问题讨论】:

    标签: android android-emulator android-sdcard


    【解决方案1】:

    首先确保你有适当的权限,如果你不把这个添加到你的 AndroidManifest.xml 中

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    

    其次,您还应该检查下载文件夹是否存在,如果不存在则必须创建它。检查 File 类中的方法是否存在。

    如果您查看 Kevin 的 MidiFile 方法,请使用它仅在特定路径上创建文件,并不能确保该路径存在是您的工作

    mg.writeToFile ("somefile.mid");
    

    【讨论】:

      【解决方案2】:

      我建议你检查一下你是否创建了 emaulator 的 sdcard 并具有写入权限。

      请参考:Android Emulator sdcard push error: Read-only file system

      一旦你完成了这一步,我认为它也应该以编程方式为你工作。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-09-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-11-17
        • 1970-01-01
        • 2022-01-16
        相关资源
        最近更新 更多