下面的方法应该将二进制文件读入arrayList
。但得到一个java.io.EOFException
:
at java.io.ObjectInputStream$BlockDataInputStream.peekByte(ObjectInputStream.java:2553)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1296)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:350)
at .... Read(Tester.java:400)
at .... main(Tester.java:23)
main 的第 23 行只是调用该方法,第 400 行是下面的 while 循环。有任何想法吗?
private static void Read() {
try {
ObjectInputStream objIn = new ObjectInputStream(new FileInputStream("/file.bin"));
while (objIn.readObject() != null) {
list.add((Libreria) objIn.readObject());
}
objIn.close();
} catch(Exception e) {
e.printStackTrace();
}
}
根据其他答案,您正在循环中阅读两次。您的另一个问题是空测试。readObject()
仅当您编写了 null 时才返回 null,而不是在 EOS 中,因此将其用作循环终止测试没有多大意义。正确终止areadObject()
loop is
catch (EOFException exc)
{
in.close();
break;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)