2012-02-23 18 views
2

外部ストレージのテキストファイルにint値を保存しようとしています。 saveAudio()関数を使用しようとすると、FileNotFoundExceptionが発生します。私は間違って何をしていますか?私はアンドロイドエミュレータでプログラムを実行しています。Android:DataInputStream&DataOutputstreamが私のディレクトリを参照していません

File externalStorageDir = new File (Environment.getExternalStorageDirectory().getAbsoluteFile(),"audiosettings.txt"); 

/**Stores the game volume level*/ 
int gameVolume_level; 
/**Stores the music volume level*/ 
int musicVolume_level; 
/**Stores the GUI volume level*/ 
int guiVolume_level; 

private void loadAudio() { 


    try { 
     DataInputStream dis = new DataInputStream(new FileInputStream(externalStorageDir)); 

     gameVolume_level = dis.readInt(); 
     dis.readChar(); 
     musicVolume_level = dis.readInt(); 
     dis.readChar(); 
     guiVolume_level = dis.readInt(); 
     dis.readChar(); 



    } catch (FileNotFoundException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

} 

private void saveAudio() { 

DataOutputStream dos; 
try { 
    dos = new DataOutputStream(new FileOutputStream(externalStorageDir)); 
    dos.writeInt(gameVolume_level); 
    dos.writeChar('\t'); 
    dos.writeInt(musicVolume_level); 
    dos.writeChar('\t'); 
    dos.writeInt(guiVolume_level); 
    dos.writeChar('\n'); 
    dos.close(); 



} catch (FileNotFoundException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
} catch (IOException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
} 

}

答えて

0

あなたの実装が正しいです。ただし、携帯電話やエミュレータでSDカードが使用可能であることを確認する必要があります。それは簡単に、あなたはどうか

Environment.getExternalStorageDirectory().getAbsoluteFile() 

戻り、既存のファイルを試すことができますようにするに

ファイルが存在する場合は、アクセス許可を確認してください。外部ストレージを使用する場合は、AndroidManifest.xmlに以下の権限が必要です。

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

希望すると助かります。

+0

ありがとうございます。使用許可は私が保存できる必要がありました。それは今働いている。ありがとう! – iamarnold

関連する問題