Java 提供了一种对象序列化的机制。用一个字节序列可以表示一个对象,该字节序列包含该 对象的数
据 、 对象的类型 和 对象中存储的属性 等信息。字节序列写出到文件之后,相当于文件中持久保存了一个
对象的信息。反之,该字节序列还可以从文件中读取回来,重构对象,对它进行反序列化。
创建一个类
package com.Serialization.Test;
import java.io.Serializable;
/**
* @description: 创建一个类
*/
//实现标记接口 Serializable
public class Person implements Serializable {
//加上版本号,以免出现无法找到class文件的异常
static final long serialVersionUID = 5L; //版本号
//定义成员变量
private String name;
private int age;
//无参构造
public Person() {
}
//有参构造
public Person(String name, int age) {
this.name = name;
this.age = age;
}
//重写toString方法
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
// get\set方法
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
序列化操作
package com.Serialization.Test;
import java.io.FileOutputStream;
import java.io.ObjectOutputStream;
/**
* @description: 序列化练习
*/
public class Test_01 {
public static void main(String[] args) throws Exception {
//创建person对象
Person p = new Person("张三",18);
// 2.创建序列化流对象,关联目的地文件路径
//新建字节输出流对象
FileOutputStream fis = new FileOutputStream("Day_11\\aaa\\g.txt");
//新建序列化对象
//public ObjectOutputStream(OutputStream out);创建序列化流对象,传入字节输出流序列化操作
ObjectOutputStream oos = new ObjectOutputStream(fis);
// 3.序列化对象
//public void wirteObject(Object obj);写一个对象(序列化操作)
oos.writeObject(p);
//序列化成功
// 4.关闭流,释放资源
oos.close();
fis.close();
//打印对象
System.out.println(p.toString());
}
}
反序列化操作
package com.Serialization.Test;
import java.io.FileInputStream;
import java.io.ObjectInputStream;
import java.sql.Statement;
/**
* @description: 反序列化操作
*/
public class Test_02 {
public static void main(String[] args) throws Exception {
//反序列化操作:将序列化文件进行重构
//public ObjectInputStream(InputStream in);创建反序列化流对象,传入字节输入流 反序列化操作
//public Object readObject();重构一个对象
//新建输入流对象,将链接指定源文件
FileInputStream fis = new FileInputStream("Day_11\\aaa\\g.txt");
//创建反序列化流对象
ObjectInputStream ois = new ObjectInputStream(fis);
//重构反序列化流对象
Object o = ois.readObject();
//关闭流,释放资源
ois.close();
fis.close();
//打印对象
System.out.println(o.toString());
}
}