微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐