【发布时间】:2016-08-15 21:39:16
【问题描述】:
我正在尝试使用 Serializable 从文件中读取对象(类的相同对象),但是当它读取所有对象时,它给了我错误IOException,java.io.ObjectInputStream$BlockDataInputStream.peekByte。
我正在读取对象,然后保存到列表。但是当它到达时,可以说 EOF 它会引发错误。
这是我的方法:
private static void updateBook(String name) {
// TODO Auto-generated method stub
FileInputStream fis = null;
ObjectInputStream in = null;
Object obj = new Object();
List<Object> libb = new ArrayList<Object>();
File file = new File(name + ".ser");
if (file.exists()) {
try {
fis = new FileInputStream(file);
in = new ObjectInputStream(fis);
try {
while (true) {
obj = in.readObject();
libb.add(obj);
}
} catch (OptionalDataException e) {
if (!e.eof) throw e;
//JOptionPane.showMessageDialog(null, "Done!");
} finally {
in.close();
//fis.close();
}
for(int j = 0; j < libb.size(); ++j) {
Book li = new Book();
li = (Book) libb.get(j);
System.out.println(li.getBookName());
}
//
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
} else {
System.out.println("\nThe file does not Exist!");
}
}
谁能告诉我如何避免来自while(true)的这个错误。
完全错误:
java.io.EOFException
at java.io.ObjectInputStream$BlockDataInputStream.peekByte(Unknown Source)
at java.io.ObjectInputStream.readObject0(Unknown Source)
at java.io.ObjectInputStream.readObject(Unknown Source)
【问题讨论】:
-
@aribeiro 它不同,因为我确实有 finally 子句,但我仍然收到 EOF 错误。
-
是的,但你不知道
EOFException。 -
哦,我明白了,谢谢。它解决了。
标签: java eclipse object serializable