При написании строк таким способом не помещаются какие-либо разделители в файл. Вы не знаете, где заканчивается одна строка и начинается следующая. Вот почему вы должны указать длину строк при чтении их обратно.
Вместо этого вы можете использовать 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");
}