2

外部ストレージのテキスト ファイル内に int 値を保存しようとしています。saveAudio() 関数を使用しようとすると、FileNotFoundException が発生します。私は何を間違っていますか?Androidエミュレーターでプログラムを実行しています。

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();
}

}

4

1 に答える 1

0

あなたの実装は正しいです。ただし、電話またはエミュレーターで SD カードが使用可能であることを確認する必要があることに注意してください。

簡単にするために、次のいずれかを試すことができます

Environment.getExternalStorageDirectory().getAbsoluteFile()

既存のファイルを返します。

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

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

それが役に立てば幸い。

于 2012-02-23T02:04:03.510 に答える