2011-12-25 115 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

謝謝,它解決了我的問題:) –