码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2018-08-11 12:27:16      阅读:169      评论:0      收藏:0      [点我收藏+]

标签:tor   作用   edit   only   throws   obj   version   分享图片   NPU   

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   关键字;

 

 技术分享图片

 

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

标签:tor   作用   edit   only   throws   obj   version   分享图片   NPU   

原文地址:https://www.cnblogs.com/dw3306/p/9459186.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!