Io对象流需要读取多个对象

1.如果利用for-each循环,处理不好就会报错
在这里插入图片描述
在这里插入图片描述
2.我们直接将对象放入容器然后直接将容器写入文件,最好进行读取。

 //写入
       ObjectOutputStream oos=new ObjectOutputStream(new BufferedOutputStream(new FileOutputStream("obj4.ser")));
       /*不需要这样写
       for (String key:m.keySet()){
            oos.writeObject(m.get(key));
            oos.flush();
        }
        oos.close();*/
        oos.writeObject(m);
        oos.flush();
        oos.close();

        //读
        ObjectInputStream ois = new ObjectInputStream(new BufferedInputStream(new FileInputStream("obj4.ser")));
        /*这样有误
        Human human=null;
        while (true) {
            if (ois.readObject() != null) {
                //这里会报错 at java.base/java.io.ObjectInputStream$BlockDataInputStream.peekByte

                human = (Human) ois.readObject();
            } else {
                break;
            }
            if (human instanceof Human) {
                Human humanObject = (Human) human;
                System.out.println(humanObject);
            }
        }*/
        m=(Map<String,Human>)ois.readObject();
        ois.close();
        for (String key:m.keySet()){
            System.out.println(m.get(key));
        }

输出结果
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值