Der folgende Code gibt mir den Fehler InvalidClassException
Meine User
Klasse implementiert Serializable
so bin ich verloren. Ich versuche, list
gefüllt mit User
Objekte zu speichern und dann in der Lage sein, es zurück zu lesen.lokale Klasse inkompatible Fehler
List<User> userList = new ArrayList<User>();//list used
try {
ObjectOutputStream os = new ObjectOutputStream(new FileOutputStream(fileName, true));
os.writeObject(userList);
os.close();
} catch (IOException e1) {
e1.printStackTrace();
}
// input
try {
ObjectInputStream ois = new ObjectInputStream(new FileInputStream(fileName));
userList = (List<User>) ois.readObject();
ois.close();
} catch (FileNotFoundException e1) {
e1.printStackTrace();
} catch (IOException e1) {
e1.printStackTrace();
} catch (ClassNotFoundException e1) {
e1.printStackTrace();
}
Sie verwenden "append" 'new FileOutputStream (fileName, true)' ... Wurde Ihre Datei leer gestartet? Die Datei beginnt möglicherweise mit ungültigen Inhalten aus früheren Tests. Löschen Sie es und wiederholen Sie den Test. – AJNeufeld
Danke, dass es funktioniert hat, gibt es einen Weg, dies in Zukunft zu vermeiden? –
Err, ja, nicht an Objekt-Ausgabe-Streams anhängen. Dies würde jedoch einen anderen Fehler verursachen. Der Fehler hier ist, dass sich die lokale Klasse unterscheidet sich von der Klasse, wie es war, als es serialisiert wurde, auf eine Weise, die in der Fehlermeldung erwähnt wird, die Sie nicht hilfreich zur Verfügung gestellt haben. – EJP