HashMap 自定义指令 WebService web开发 树莓派USB centos7 xaml woocommerce pdo layer safari scripting pmp学习视频 angularjs视频教程 jq第一个子元素 hadoop环境变量配置 python环境搭建 python类与对象 python中import java编程 java时间 java日期类 javasocket 网站后台模板 千千静听绿色版 vnc客户端 pr转场特效下载 音乐剪辑器下载 java字符串截取 cdr怎么画波浪线 qq飞车刷车 流媒体下载 qq流览器下载 5s降级 画图3d php保留两位小数 字体模糊 pcmark10 大数据就业方向 网红男头像
当前位置: 首页 > 学习教程  > 编程语言

ObjectInputStream读取对象时报java.io.EOFException

2021/1/13 19:20:43 文章标签: 测试文章如有侵权请发送至邮箱809451989@qq.com投诉后文章立即删除

错误内容: java.io.EOFExceptionat java.io.ObjectInputStream$BlockDataInputStream.peekByte(ObjectInputStream.java:3076)at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1616)at java.io.ObjectInputStream.readObject(ObjectInputStream.…

错误内容:

java.io.EOFException
	at java.io.ObjectInputStream$BlockDataInputStream.peekByte(ObjectInputStream.java:3076)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1616)
	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:501)
	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:459)
	at com.study.utils.DataUtils.readBricksData(DataUtils.java:833)
	at com.study.test.MyTest.main(MyTest.java:11)

原对象实现了Serializable接口和重写了toString()方法,但是仍然报错

之前是这样写的:

        // 对象流的写入:ArrayList<Brick> bricks;
        try (ObjectOutputStream osc = new ObjectOutputStream(new FileOutputStream(file))
        ) {

            // 往新文件中写入对象(文件中的内容是乱码的)(序列化)
            for (int i = 0; i < bricks.size(); i++) {
                osc.writeObject(bricks.get(i));
            }
            osc.flush();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

// 读取流文件
    try (
             ObjectInputStream ois = new ObjectInputStream(new FileInputStream("files/brickData.txt"))
        ) {
            // 从新文件中读取对象信息(反序列化)
            while (brick != null) {
                bricks.add(brick);
                try {
                   brick = (Brick) ois.readObject();
                } catch (EOFException e) {
                    System.out.println("出错啦");
                    e.printStackTrace();
                }
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }

修改之后是这样的(如此在之前的前提下就可以成功读取):

        // 对象流的写入:ArrayList<Brick> bricks;
        try (ObjectOutputStream osc = new ObjectOutputStream(new FileOutputStream(file))
        ) {

            // 往新文件中写入对象(文件中的内容是乱码的)(序列化)
            osc.writeObject(bricks);
            osc.flush();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

// 读取流文件
    try (
             ObjectInputStream ois = new ObjectInputStream(new FileInputStream("files/brickData.txt"))
        ) {
            // 从新文件中读取对象信息(反序列化)
            bricks = (ArrayList<Brick>) ois.readObject();

        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }

 

 


本文链接: http://www.dtmao.cc/news_show_600039.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?