一、序列化
1、什么是序列化
- 把Java对象转换为字节序列存储到计算机文件中的过程
- 在传递和保存对象时.保证对象的完整性和可传递性。对象转换为有序字节流,以便在网络上传输或者保存在本地文件中
2、序列化代码演示
在这里插入代码片public class Teacher implements Serializable {
private String name;
public Teacher(String name) {
this.name = name;
}
public Teacher() {
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "Teacher{" +
"name='" + name + '\'' +
'}';
}
}
public class Student implements Serializable {
private String name;
private String sex;
//瞬事状态,不写入文件
private transient int age;
private Teacher teacher;
public Student() {
}
public Student(String name, String sex, int age, Teacher teacher) {
this.name = name;
this.sex = sex;
this.age = age;
this.teacher = teacher;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public Teacher getTeacher() {
return teacher;
}
public void setTeacher(Teacher teacher) {
this.teacher = teacher;
}
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", sex='" + sex + '\'' +
", age=" + age +
", teacher=" + teacher +
'}';
}
}
- 将Student类的实例序列化到student.data文件中去
public class 序列化流 {
public static void main(String[] args) throws Exception {
//创建对象序列化输出流
ObjectOutputStream objectOutputStream = new ObjectOutputStream(new FileOutputStream("student.data"));
//创建一个Teacher对象
Teacher teacher = new Teacher("廖常");
Student student = new Student("廖常","男",24,teacher);
objectOutputStream.writeObject(student);
// objectOutputStream.writeObject(teacher);
objectOutputStream.close();
}
}
- 运行结果

二、反序列化
1、什么是反序列化
- 指把存储在计算机文件中的字节序列恢复为Java对象的过程
- 根据字节流中保存的对象状态及描述信息,通过反序列化重建对象
2、反序列化代码演示
- 将student.data文件中存储的对象反序列化到内存中显示
public class 反序列化流 {
public static void main(String[] args) throws Exception {
ObjectInputStream objectInputStream = new ObjectInputStream(new FileInputStream("student.data"));
//反序列化
Student student = (Student)objectInputStream.readObject();
objectInputStream.close();
System.out.println(student.toString());
}
}
- 运行结果
