Android: DataInputStream и DataOutputstream не видят мой каталог - PullRequest
2 голосов
/ 23 февраля 2012

Я пытаюсь сохранить значения 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();
}

}

1 Ответ

0 голосов
/ 23 февраля 2012

Ваша реализация верна.Но обратите внимание, что вы должны убедиться, что SD-карта доступна в вашем телефоне или эмуляторе.

Чтобы упростить эту задачу, вы можете попробовать,

Environment.getExternalStorageDirectory().getAbsoluteFile()

вернуть существующий файл.

Если файл существует, проверьте разрешение.Если вы хотите использовать внешнее хранилище, в AndroidManifest.xml необходимо следующее разрешение:

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

Надеюсь, это поможет.

...