Ich versuche, eine ArrayList von benutzerdefinierten (serialisierbaren) Objekten in eine Datei zu schreiben/schreiben. Es funktioniert wie erwartet, bis auf eine Sache: Ich bekomme eine EOF-Ausnahme beim Lesen der Datei. Hier ist mein Code:Unerwartete EOF-Ausnahme
class FileHandler {
private final String FILENAME = "storage.txt";
ArrayList<Plane> readFromFile(Context context) {
ArrayList<Plane> returnList = new ArrayList<>();
Plane temp;
try {
FileInputStream fileInputStream = context.openFileInput(FILENAME);
ObjectInputStream objectInStream = new ObjectInputStream(fileInputStream);
while ((temp = (Plane)objectInStream.readObject()) != null) {
returnList.add(temp);
}
objectInStream.close();
}
catch (IOException | ClassNotFoundException e) {
e.printStackTrace();
}
return returnList;
}
void writeToFile(ArrayList<Plane> inData, Context context) {
FileOutputStream fileOutputStream;
ObjectOutputStream outputStream;
try {
fileOutputStream = context.openFileOutput(FILENAME, Context.MODE_PRIVATE);
outputStream = new ObjectOutputStream(fileOutputStream);
for (Plane p: inData) {
outputStream.writeObject(p);
}
outputStream.close();
fileOutputStream.close();
}
catch (IOException e) {
e.printStackTrace();
}
}
}
Die Datei wird geschrieben und gelesen, wie beabsichtigt, aber ich bin immer eine EOF Ausnahme, wenn die Datei zu lesen. Keine Ahnung warum. Ich dachte, meine While-Schleife würde sicherstellen, dass das nicht passieren kann?
- Warum bekomme ich diese Ausnahme?
- Ebene ist serialisierbar. Ist es möglich, die Datei zu lesen und in die Datei zu schreiben, wenn ich Plane stattdessen als Parcable ändere? (Wie?)
Wie führe ich eine solche Überprüfung durch? –
https://stackoverflow.com/questions/2626163/java-fileinputstream-objectinputstream-reachs-end-of-file-eof Dies könnte nützlich sein – dhani