序列化和反序列化
Java序列化
就是指把Java对象转换为字节序列
的过程
Java反序列化
一就是指把字节序列恢复为Java对象
的过程。
序列化注意事项:
被序列化的实体类必须实现一个接口 Serializable
,不然不能被序列化。
通常,序列化文件的后缀为.ser
。
案例:
package com.lyc.lesson;
import java.io.*;
class Person implements Serializable{
String name;
int age;
public Person() {
}
public Person(String name, int age) {
this.name = name;
this.age = age;
}
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;
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
public class Lesson07 {
public static void main(String[] args) throws IOException, ClassNotFoundException {
Person person = new Person();
person.setAge(12);
person.setName("张三");
//序列化:将文件写入磁盘中
FileOutputStream fos = new FileOutputStream(new File("C:/Users/ASUS/Desktop/aaa/sss.ser"));
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(person);
oos.close();
fos.close();
System.out.println("写入成功");
//反序列化:将文件读入到程序中
FileInputStream fis = new FileInputStream(new File("C:/Users/ASUS/Desktop/aaa/sss.ser"));
ObjectInputStream ois = new ObjectInputStream(fis);
Person o = (Person)ois.readObject();
ois.close();
fis.close();
System.out.println(person.getName());
System.out.println(person.getAge());
}
}