序列化:将对象转换成字节序列,方便对象的存储和传输
反序列化:将字节序列转换成对象的过程
序列化需要实现Serializable这个接口,或者子类的父类实现了Serializable接口,
通过ObjectOutputStream对象输出流将java对象持久化到磁盘上,
通过ObjectIntputStream对象输入流将磁盘中的字节码文件转换成java对象
public class SerializableDemo implements Serializable {
//serialVersionUID: 保证版本一致,修改了这个类,就要修改这个值,否则可能会报错
private static final Long serialVersionUID = 1L;
private static String AGE = "269";
private String name;
private String color;
transient private String car;
@Override
public String toString() {
return "SerializableDemo{" +
"AGE='" + AGE + '\''+
", name='" + name + '\'' +
", color='" + color + '\'' +
", car='" + car + '\'' +
'}';
}
import java.io.*;
public class SerializableTest01 {
public static void main(String[] args) throws Exception {
oosTest();
SerializableDemo sd = oisTest();
System.out.println(sd.toString());
}
private static SerializableDemo oisTest() throws Exception{
ObjectInputStream ois = new ObjectInputStream(new FileInputStream(new File("d:/hello.txt")));
SerializableDemo o = (SerializableDemo)ois.readObject();
System.out.println("完成反序列化");
ois.close();
return o;
}
public static void oosTest() throws IOException{
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(new File("d:/hello.txt")));
SerializableDemo sd = new SerializableDemo("小明","黄色","奥迪");
oos.writeObject(sd);
System.out.println("完成序列化");
oos.close();
}
}