加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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

发布时间:2020-12-15 02:06:55 所属栏目:Java 来源:网络整理
导读:我基本上遇到了类似的问题: EOFexception in Java when reading objectinputstream,但我找不到干净代码的答案. 答案指出,当读者到达文件结尾时,ObjectInputStream#readObject将抛出异常.在网上寻找解决方案之后,我还没有找到解决方案.对于这种情况,这可能是
我基本上遇到了类似的问题: 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.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读