2011-12-25 21 views
1

SDカードにMIDIファイルを書き込もうとしています。私のデバイスでは動作しますが、エミュレータでは動作しません。ここlogCat上のエラーです:SDカードにファイルを書き込めません

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" /> 

第2に、作成する必要がない場合は、ダウンロードフォルダが存在するかどうかを確認する必要があります。メソッドがFileクラスから存在することを確認してください。

あなたはそれを使用するケビンのMIDIファイルのメソッドを見てみた場合、それはパスを確保しない特定のパス上のファイルを作成するには、emaulatorのSDカードを持っている場合、私はチェックをお勧めしますそれはあなたの仕事

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

ありがとう、それは私の問題を解決しています:) –

0

で存在しますそれに書き込む権限を持って作成されます。

はこれを参照してください:あなたはこのステップで通過したらAndroid Emulator sdcard push error: Read-only file system

が、私はそれがプログラム的にもあなたのために働くものだと思います。

関連する問題