zoukankan      html  css  js  c++  java
  • IO流--序列化流与反序列化流

    IO流--序列化流与反序列化流:

       序列化流:把对象当做流一样写入到文本文件中 ObjectOutputSream();

        反序列化流:把文本文件中的流对象还原成对象ObjectInputSream();

     


    具体的使用:

     1   创建java对象 实现序列化接口(Serializable):

             

    序列化代码实现:

    1    private void writer() throws IOException {
    2         ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("OnlyFileTest\testObj.txt"));
    3         Student student = new Student("无极",23);
    4                  oos.writeObject(student);
    5                  oos.close();
    6     }

     反序列化代码实现:

     private void read() throws IOException, ClassNotFoundException {
            ObjectInputStream ois = new ObjectInputStream(new FileInputStream("OnlyFileTest\testObj.txt"));
            Object o = ois.readObject();
            ois.close();
            System.out.println(o);
        }

     因为类实现了serializable接口(只起对类进行标记的作用!!),底层会生成serialVersionUID;我们每次修改java文件,id会变化,就会导致读写id的值不匹配,就会报错;

    解决:让id是一个固定的值即可:

        使用 Idea自动生成serialVersionUID:      

    完整操作流程:Setting->Editor->Inspections->Java->Serialization issues->Serializable class without ‘serialVersionUID’(选择勾上)

    配置完成后,如果你的Class实现了Serializable接口,那么将光标停留在类名上,然后按Alt+Enter就会提示自动创建serialVersionUID了。

    
    

     2:如果一个类实现Serializable接口后,不想里面的某个成员变量被序列化:可使用 transient   关键字;

     

  • 相关阅读:
    别再重复造轮子了,利用list创建任意数据类型的链表
    可配置内存池实现
    简单内存池实现
    基于本博客版本中的循环缓冲的测试(Linux环境)
    循环缓冲实现(ring buffer/circular buffer)
    recvfrom超时设置
    Linux系统如何做性能测试?
    深入理解虚拟内存机制
    Linux 内核的测试和调试
    python学习之路 实现简单的计算机功能。
  • 原文地址:https://www.cnblogs.com/dw3306/p/9459186.html
Copyright © 2011-2022 走看看