序列化反序列化概述 什么是序列化? 序列化,是将对象写入到 IO 流中 什么是反序列化? 从 IO 流中恢复对象。 有什么用? 序列化机制允许将实现序列化接口的Java对象转换为字节序列
序列化反序列化概述
什么是序列化?
序列化,是将对象写入到 IO 流中
什么是反序列化?
从 IO 流中恢复对象。
有什么用?
序列化机制允许将实现序列化接口的Java对象转换为字节序列。这些字节序列化可以保存到磁盘上,通过网络传输,以达到恢复到原来的对象的目的。
怎么用?
在远程调用场景 RMI,RPC 都是经常使用,使得相关接口调用实现序列化接口。
如何序列化,反序列化
序列化的步骤:
创建一个输出流 ObjectOutPutStream
调用 ObjectOutPutStream对象的 writeObject 输出可序列化对象。
反序列化步骤:
创建 ObjectInputStream 对象,然后调用ObjectInputStream的 readObject 方法读取对象。
序列化和反序列化代码如下:
package JavaBase.serializable;import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
class Person implements Serializable {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
/**
* @see java.lang.Object#toString()
*/
@Override
public String toString() {
return "Person{" + "name='" + name + '\'' + ", age=" + age + '}';
}
}
public class WriteObject {
public static void main(String[] args) {
try {
// 序列化步骤,新建一个 ObjectOutputStream 镀锡
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("object.txt"));
Person person = new Person("xiaoming", 19);
// 序列化 写入对象
oos.writeObject(person);
// 反序列化 新建一个ObjectInputStream
ObjectInputStream ois = new ObjectInputStream(new FileInputStream("object.txt"));
// 反序列化 读取
Person per = (Person) ois.readObject();
System.out.println(per);
} catch (Exception e) {
e.printStackTrace();
}
}
}
关注我们,了解更多