无法在sdcard android模拟器上写文件

时间:2011-12-25 02:51:53

标签: android android-emulator android-sdcard

我正在尝试在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");
    }

2 个答案:

答案 0 :(得分:2)

首先请确保您拥有适当的权限,如果您不将此添加到AndroidManifest.xml

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

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

如果你看看Kevin的MidiFile方法,使用它只在特定路径上创建一个文件,它不能确保存在的路径是你的工作

mg.writeToFile ("somefile.mid");

答案 1 :(得分:1)

我建议检查你是否创建了emactor的sdcard,并在其上创建了写入权限。

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

完成这一步后,我认为它也会以编程方式为您服务。