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

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

时间: 2024-08-01 23:14:22

IO流--序列化流与反序列化流的相关文章

阶段1 语言基础+高级_1-3-Java语言高级_06-File类与IO流_09 序列化流_3_对象的反序列化流_ObjectInputStream

声明了IO异常,这里还是红色的 转换为Person对象 原文地址:https://www.cnblogs.com/wangjunwei/p/11273536.html

Java基础知识强化之IO流笔记65:序列化流 和 反序列化流

1. 什么是 序列化 和 反序列化 ?     序列化 (Serialization):将对象的状态信息转换为可以存储或传输的形式的过程.在序列化期间,对象将其当前状态写入到临时或持久性存储区.以后,可以通过从存储区中读取或反序列化对象的状态,重新创建该对象.一般的格式是与平台无关的二进制流,可以将这种二进制流持久保存在磁盘上,也可以通过网络将这种二进制流传输到另一个网络结点.  反序列化(Anti Serialization ):是指把这种二进制流数据还原成对象. 2. 序列化流 和 反序列化

详解 序列化流 与 反序列化流

目录 序列化流 与 反序列化流 ObjectOutputStream 类: (序列化流) ObjectInputStream 类: (反序列化流): (请观看本人博文--<详解 I/O流>) @ 序列化流 与 反序列化流 可能同学们看到本篇博文时会有如下问题: 什么是 序列化 与 反序列化 呢? 那么,现在,本人就来讲解下这两个名词的定义: 序列化: 就是把对象通过流的方式存储到文件中 反序列化: 就是把文件中存储的对象以流的方式还原成对象 现在,本人再来介绍下这两个流的作用: ObjectI

IO流—序列化流与打印流

用于从流中读取对象的 操作流 ObjectInputStream    称为 反序列化流 用于向流中写入对象的操作流 ObjectOutputStream   称为 序列化流 特点:用于操作对象.可以将对象写入到文件中,也可以从文件中读取对象. 对象序列化流ObjectOutputStream与对象反序列化流ObjectInputStream ObjectOutputStream 将 Java 对象的基本数据类型和图形写入 OutputStream.可以使用 ObjectInputStream

Java IO流-序列化流和反序列化流

2017-11-05 20:42:06 序列化流:把对象按照流的方式存入文本文件或者在网络中传输. 对象 -- 流数据(ObjectOutputStream) 反序列化流:把文本文件中的流对象数据或者网络中的流对象数据还原成对象. 流数据 -- 对象(ObjectInputStream) ObjectOutputStream ObjectOutputStream:ObjectOutputStream 将 Java 对象的基本数据类型和图形写入 OutputStream.可以使用 ObjectIn

java -&gt;IO流_序列化流与反序列化流

序列化流与反序列化流 用于从流中读取对象的操作流 ObjectInputStream    称为 反序列化流 用于向流中写入对象的操作流 ObjectOutputStream   称为 序列化流(对象保存到文件中) l  特点:用于操作对象.可以将对象写入到文件中,也可以从文件中读取对象. 对象序列化流ObjectOutputStream ObjectOutputStream 将 Java 对象的基本数据类型和图形写入 OutputStream.可以使用 ObjectInputStream 读取

IO之序列化流与反序列化流

首先是运行图 对象序列化流ObjectOutputStream ObjectOutputStream 将 Java 对象的基本数据类型和图形写入 OutputStream.可以使用 ObjectInputStream 读取(重构)对象. 通过在流中使用文件可以实现对象的持久存储. 首先创建一个person类 表明空参构造,有参构造 tostring 然后创建demo01 成功后演示 因为是写进系统的数据 所以是乱码 对象反序列化流ObjectInputStream ObjectInputStre

IO【转换流,打印流,序列化】

编码: 把看的懂,变成看不懂的 String str = "中国"; byte[] bytes = str.getBytes(); System.out.println(Arrays.toString(bytes));解码: 把看不懂的内容,变成能看懂的 String s = new String(bytes); System.out.println(s); java.io.OutputStreamWriter extends Writer OutputStreamWriter:转换流

Java API —— IO流(数据操作流 &amp; 内存操作流 &amp; 打印流 &amp; 标准输入输出流 &amp; 随机访问流 &amp; 合并流 &amp; 序列化流 &amp; Properties &amp; NIO)

1.操作基本数据类型的流 1) 操作基本数据类型 · DataInputStream:数据输入流允许应用程序以与机器无关方式从底层输入流中读取基本 Java 数据类型.应用程序可以使用数据输出流写入稍后由数据输入流读取的数据. · DataOutputStream:数据输出流允许应用程序以适当方式将基本 Java 数据类型写入输出流中.然后,应用程序可以使用数据输入流将数据读入. package datastreamdemos; import java.io.*; /** * Created b