workplace-blog

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
  30 随笔 :: 0 文章 :: 0 评论 :: 696 阅读

对象流

  • 对象流ObjectOutputStream/ObjectInputStream

    • 增强了缓冲区功能
    • 增强了读取八种基本数据类型和字符串功能
    • 增强了读写对象的功能:
      • readObject():从流中读取一个对象
      • writeObject(Object obj):将一个对象写入流中
  • 使用流传输对象的过程称为序列化(内存写入硬盘等存储设备)和反序列化(硬盘等存储设备写入内存)

  • 序列化和反序列化

    /**
     * 序列化,把对象写入硬盘
     * 要求:
     * (1)对象类型继承Serializable接口(标记接口,表示该类可被序列化)
     * (2)对象中的引用数据类型字段,该引用类也需要实现Serializable接口。
     */
    public class objectOutputStream {
        public static void main(String[] args) throws Exception{
            //创建基础节点流
            FileOutputStream fos = new FileOutputStream("E:\\student.bin");//二进制文件
            //创建对象流
            ObjectOutputStream oss = new ObjectOutputStream(fos);
            //实例化对象
            Student student = new Student("zhangsan");
            oss.writeObject(student);
            oss.close();
        }
    }
    
    /**
     * 反序列化,ObjectInputStream
     */
    public class objectInputStream {
        public static void main(String[] args) throws Exception{
            //创建基础节点流
            FileInputStream fis = new FileInputStream("E:\\student.bin");
            //创建对象输入流,反序列化
            ObjectInputStream ois = new ObjectInputStream(fis);
            //读取文件
            Student student =(Student)ois.readObject();
            ois.close();
            System.out.println("finish");
            System.out.println(student);
        }
    }
    //输出结果:
    finish
    Student{name='zhangsan'}
    
  • 对象类型继承Serializable接口(标记接口,表示该类可被序列化)

  • 对象中的引用数据类型字段,该引用类也需要实现Serializable接口。

  • 使用transient修饰的属性不能被序列化。

  • 序列化版本号ID,保证序列化的类和反序列化的类是同一个类。

  • 静态属性不能被序列化。

  • 可以借助集合序列化多个对象。

    public class Student  implements Serializable{
        public Adress address;//Adress类也需要实现Serializable接口
        transient int age;//age属性不能被序列化
        private static final serialVersion = 100L;
        static int number;//静态属性不可序列化
    }
    
posted on   多巴胺LLL  阅读(26)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
点击右上角即可分享
微信分享提示