- 对象序列化就是持久化写入硬盘。相当于打游戏时的存档。
Person类
public class Prerson implements Serializable {
/*
* 序列化时会将这个版本信息也写入到硬盘
* 反序列化时会对比版本的数值是否相同,相同可转,不相同不可转
* */
private static final long serialVersionUID = 2L;
private String name;
private int age;
private String gender;
private transient String[] bobby; //短暂的,不进入持久化,不常用
public Prerson(String name, int age, String gender, String[] bobby) {
this.name = name;
this.age = age;
this.gender = gender;
this.bobby = bobby;
}
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;
}
public String[] getBobby() {
return bobby;
}
public void setBobby(String[] bobby) {
this.bobby = bobby;
}
@Override
public String toString() {
return "Prerson{" +
"name='" + name + '\'' +
", age=" + age +
", gender='" + gender + '\'' +
", bobby=" + Arrays.toString(bobby) +
'}';
}
}
- transient,短暂的,不进入持久化,不常用
将person类数据序列化(持久化)操作
public class OOSDemo {
public static void main(String[] args) throws IOException {
Prerson person = new Prerson("闫老师",17,"男",new String[] {
"吃饭","睡觉"});
//创建低级流
FileOutputStream fos = new FileOutputStream("person.obj");
ObjectOutputStream oss = new ObjectOutputStream(fos);
/*
* 要序列化的对象必须实现可序列化的接口
* 否则在进行序列化时会报错
* 1.对象流会将指定的对象转换成一组字节
* 这个过程叫序列化
* 2.将序列化后的这组字节写到流对象指定的硬盘路径上
* 这个过程叫数据持久化
* */
oss.writeObject(person);
System.out.println("over");
oss.close();
}
}
读取操作
public class OISDemo {
public static void main(String[] args) throws IOException, ClassNotFoundException {
FileInputStream fis = new FileInputStream("person.obj");
ObjectInputStream ois = new ObjectInputStream(fis);
Prerson p = (Prerson) ois.readObject();
System.out.println(p);
ois.close();
}
}