java – 使用ObjectInputStream读取文件时的EOFException

我基本上遇到了类似的问题: EOFexception in Java when reading objectinputstream,但我找不到干净代码的答案.

答案指出,当读者到达文件结尾时,ObjectInputStream#readobject将抛出异常.在网上寻找解决方案之后,我还没有找到解决方案.对于这种情况,这可能是一个很好的清洁解决方

注意:我试过这个(但它看起来很难看并且不是干净的代码).我正在寻找更好的解决方案:

ObjectInputStream ois = new ObjectInputStream(new FileInputStream(file));
try {
    Object o;
    while ((o = ois.readobject()) != null) {
        if (o instanceof MyClass) {
            MyClass m = (MyClass)o;
            //use the object...
        }
    }
} catch (EOFException eofex) {
    //do nothing
}  catch (IOException ioex) {
    throw ioex;
    //I have another try/catch block outside to control the life of the ObjectInputStream
}
//later in the code...
ois.close();

解决方法

这就是应该发生的事情.你的代码错了.检查Javadoc.如果写入null,则readobject()仅返回null.它没有说任何关于在EOF返回null的事情.循环直到readobject()返回null只会在你通过writeObject()写入null时停止,如果没有,你将得到一个EOFException.

相关文章

Java中的String是不可变对象 在面向对象及函数编程语言中,不...
String, StringBuffer 和 StringBuilder 可变性 String不可变...
序列化:把对象转换为字节序列的过程称为对象的序列化. 反序...
先说结论,是对象!可以继续往下看 数组是不是对象 什么是对...
为什么浮点数 float 或 double 运算的时候会有精度丢失的风险...
面试题引入 这里引申出一个经典问题,看下面代码 Integer a ...