序列化:把java对象转换为字节序列的过程
反序列化:把字节序列恢复为java对象的过程
实现序列化的步骤(存入数据):
首先引用输出流
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("D:\\java制作\\高级特性\\stu.txt"));
其次是存入内容(可根据.writeObject()方法将需要的内容存入):
Student stu = new Student("张三",30,"女"); oos.writeObject(stu);
反序列化的步骤(取出数据):
首先引用输入流
ObjectInputStream ois = new ObjectInputStream(new FileInputStream("D:\\java制作\\高级特性\\stu.txt"));
其次是出取出内容:
Student stus = (Student) ois.readObject(); System.out.println("姓名:"+stus.getName()); System.out.println("年龄:"+stus.getAge()); System.out.println("性别:"+stus.getGender());\\因为是通过类的方法去存入的所以我们需要调用父类名做变量名,正常的String就可以。
最后是关闭输入与输出流:
oos.close(); ois.close();
以下是代码内容:
实体类:
package com.ytzl.第2章.demo5序列化.one;
import java.io.Serializable;
/*Serializable开启序列化*/
public class Student implements Serializable {
private String name;
private int age;
private String gender;
//transient,被修饰的变量,不参与序列化过程
private transient String password;
public Student() {
}
public Student(String name, int age, String gender) {
this.name = name;
this.age = age;
this.gender = gender;
}
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;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
}
测试类:
package com.ytzl.第2章.demo5序列化.one;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
public class ObjectIO {
/*研究使用IO流将对象信息保存成文件,从文件读取对象信息*/
public static void main(String[] args) throws Exception{
//序列化
//对象输出流
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("D:\\java制作\\高级特性\\stu.txt"));
//创建已经序列化的对象
Student stu = new Student("张三",30,"女");
oos.writeObject(stu);
//反序列化
//创建对象输入流
ObjectInputStream ois = new ObjectInputStream(new FileInputStream("D:\\java制作\\高级特性\\stu.txt"));
Student stus = (Student) ois.readObject();
System.out.println("姓名:"+stus.getName());
System.out.println("年龄:"+stus.getAge());
System.out.println("性别:"+stus.getGender());
oos.close();
ois.close();
}
}