【发布时间】:2017-10-28 05:16:02
【问题描述】:
我正在编写一个带有 ObjectOutputStream 和 ObjectInputStream 的函数来将联系人信息导入和导出到文件中。
我有一个异常 java.io.StreamCorruptedException: invalid stream header: EFBBBFAC in part ObjectInputStream 我不知道修复它。
如何解决,谢谢。
LienHe lh = new LienHe(name, phone, img);
try {
ObjectOutputStream out = new ObjectOutputStream(
new FileOutputStream("src/Bai6/lienhe.txt", true));
out.writeObject(lh);
out.close();
} catch (FileNotFoundException ex) {
Logger.getLogger(FrmThemLienHe.class.getName()).log(Level.SEVERE, null, ex);
} catch (IOException ex) {
Logger.getLogger(FrmThemLienHe.class.getName()).log(Level.SEVERE, null, ex);
}
lst = new ArrayList<>();
try {// exception
ObjectInputStream in = new ObjectInputStream(
new FileInputStream("src/Bai6/lienhe.txt")));
while (in.available() > 0) {
LienHe lh = (LienHe) in.readObject();
lst.add(lh);
}
} catch (ClassNotFoundException | IOException ex) {
System.out.println(ex.getMessage());
}
【问题讨论】:
-
也许不相关,但
in.available()并不像你想的那样。 -
一开始我用了while(true)但是出现了一个错误,我搜索了互联网,看到人们这样做了。
-
正确的和你可能看到的人们所做的不一定是一回事。请参阅 Javadoc。
available()不是流结束的有效测试。 -
我在互联网上搜索,我看到人们在铺木板、躺在火车轨道上以及做各种其他愚蠢/不安全的事情。您应该只关注 good 来源提供的编码示例。
标签: java serialization objectinputstream