序列化与反序列化
概述
序列化就是将对象保存在文件中,反序列化就是将文件中的数据转为对象。
序列化的使用
序列化的使用离不开对象的创建,我们先创建一个对象Book,代码如下:
public class Book {
private String name;
private String info;
public Book(){}
public Book(String name, String info) {
this.name = name;
this.info = info;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getInfo() {
return info;
}
public void setInfo(String info) {
this.info = info;
}
public String toString(){
return "Book类,name+"+name+",info"+info;
}
}
接着程序入口,进行序列化的操作,代码如下:
public static void main(String[] args) throws IOException {
//创建Book对象
Book book = new Book("西红柿炒鸡蛋", "西红柿和鸡蛋一起吵");
//创建对象输出流 对象,将输出流对象作为参数传入
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("D:\\临时文件夹\\测试\\新建文件夹\\book.txt"));
//使用对象输出流对象的writeObject方法输出对象
oos.writeObject(book);
//关闭流
oos.close();
}
运行结果显示报错:

之所以有这样的错误,因为jdk要求序列化的类必须实现Serializable接口,无需实现任何方法,用来标记该类。
public class Book implements Serializable
反序列化的使用
反序列化就是根据txt文件的位置,取出其中存储的对象数据
ObjectInputStream ois = new ObjectInputStream(new FileInputStream("D:\\临时文件夹\\测试\\新建文件夹\\book.txt"));
Object o = ois.readObject();
ois.close();
System.out.println(o);
序列化使用注意事项
序列化对象和其内部的所有对象都要实现序列化接口,才能被序列化。
浙公网安备 33010602011771号