次のコードは私にエラーInvalidClassException
を与えます。私のUser
クラスはSerializable
を実装しています。私はlist
をUser
オブジェクトで満たして保存しようとしていて、それを読み取ることができます。ローカルクラスに互換性のないエラー
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();
}
"追加"を使用しています。新しいFileOutputStream(fileName、true) '...ファイルが空になりましたか?このファイルは、以前のテストの不正なコンテンツから始まる場合があります。それを削除して再テストしてください。 – AJNeufeld
今後はこれを避ける方法はありますか? –
Err、はい、オブジェクトの出力ストリームに追加しないでください。しかし、それは異なるエラーを引き起こすでしょう。ここでのエラーは、エラーのメッセージに記載されているように、クラス名がクラスと異なることです。 – EJP