2011-12-25 92 views
1

我想在SDcard上写一个MIDI文件。它适用于我的设备,但不适用于仿真器。下面是对logcat的错误:无法写入SD卡上的文件android模拟器

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()+“/下载/ test.mid“,但仍然不起作用。

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

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

回答

2

那么首先要确保你有适当的权限,如果你不加这对你的AndroidManifest.xml

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

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

如果你看看凯文的MidiFile方法只使用它并不保证路径的具体路径上创建文件存在,那是你的工作

mg.writeToFile ("somefile.mid"); 
+0

谢谢,它解决了我的问题:) –