Android-приложение Внутреннее хранилище данных - PullRequest
1 голос
/ 18 ноября 2011

Я пытаюсь сохранить массив long в виде текстового файла, используя внутреннюю память Android, а затем получить доступ к этому массиву в другой деятельности.Заметив, что это не удалось, я выделил проблему в этом фрагменте кода ниже.

long[] timings = {200, 400, 600, 1400};
try {
    FileOutputStream fos = openFileOutput("timings", Context.MODE_PRIVATE);
    OutputStreamWriter osw = new OutputStreamWriter(fos);
    osw.write(Arrays.toString(timings));        
    osw.close();

    FileInputStream fis = openFileInput("timings");
    InputStreamReader isReader = new InputStreamReader(fis);
    char[] buffer = new char[timings.length];
    isReader.read(buffer);

    textField.setText(Arrays.toString(buffer));

    fis.close();
} catch (IOException e1) {
    e1.printStackTrace();
}

Текстовое поле, в котором отображается информация, прочитанная из файла, имеет следующий результат:

[[,2,0,0]

Результатом, который я ожидал, был исходный массив сверху.Что я здесь не так делаю?Буду признателен за любую помощь или совет.

1 Ответ

1 голос
/ 18 ноября 2011

Замените это:

        InputStreamReader isReader = new InputStreamReader(fis);
        char[] buffer = new char[timings.length];
        isReader.read(buffer);

        textField.setText(Arrays.toString(buffer));

на это:

        DataInputStream in = new DataInputStream(fis);
        BufferedReader br = new BufferedReader(new InputStreamReader(in));
        String sTemp1 = "", sTemp2 = "";
        while ((sTemp1 = br.readLine()) != null) {
            sTemp2 = sTemp1;
        }
        in.close();

        textField.setText(sTemp2);

Я надеюсь, это поможет вам.

...