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