序列化与反序列化

概述

序列化就是将对象保存在文件中,反序列化就是将文件中的数据转为对象。

序列化的使用

序列化的使用离不开对象的创建,我们先创建一个对象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);

序列化使用注意事项

序列化对象和其内部的所有对象都要实现序列化接口,才能被序列化。

posted on 2021-10-19 17:02  技术小伙伴  阅读(261)  评论(0)    收藏  举报