записывать и читать строки в / из внутреннего файла - PullRequest
12 голосов
/ 19 ноября 2010

Я вижу много примеров, как писать такие строковые объекты:

String FILENAME = "hello_file";
String string = "hello world!";

FileOutputStream fos = openFileOutput(FILENAME, Context.MODE_PRIVATE);
fos.write(string.getBytes());
fos.close();

но не как прочитать их обратно из внутреннего файла приложения. Большинство примеров предполагают конкретную длину строки для вычисления байтового буфера, но я не знаю, какой будет длина Есть ли простой способ сделать это? Мое приложение будет записывать до 50-100 строк в файл

1 Ответ

14 голосов
/ 19 ноября 2010

При написании строк таким способом не помещаются какие-либо разделители в файл. Вы не знаете, где заканчивается одна строка и начинается следующая. Вот почему вы должны указать длину строк при чтении их обратно.

Вместо этого вы можете использовать DataOutputStream.writeUTF() и DataInputStream.readUTF(), так как эти методы помещают длину строк в файл и автоматически считывают нужное количество символов.

В контексте Android вы можете сделать что-то вроде этого:

try {
    // Write 20 Strings
    DataOutputStream out = 
            new DataOutputStream(openFileOutput(FILENAME, Context.MODE_PRIVATE));
    for (int i=0; i<20; i++) {
        out.writeUTF(Integer.toString(i));
    }
    out.close();

    // Read them back
    DataInputStream in = new DataInputStream(openFileInput(FILENAME));
    try {
        for (;;) {
          Log.i("Data Input Sample", in.readUTF());
        }
    } catch (EOFException e) {
        Log.i("Data Input Sample", "End of file reached");
    }
    in.close();
} catch (IOException e) {
    Log.i("Data Input Sample", "I/O Error");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...