Java序列化和反序列化的实现

97 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第11天,点击查看活动详情

大家好,我是尚影嫣🌷,一名Java后端程序媛。如果您喜欢我的文章,欢迎点赞➕关注❤️,让我们一起成为更好的我们~🥰

序列化实现

把对象的字节序列永久保存到硬盘上,通常存放在一个文件中(序列化对象) 在网络上传送对象的字节序列(网络传输对象) 实际上就是将数据持久化,防止一直存储在内存当中,消耗内存资源。而且序列化后也能更好的便于网络运输何传播。

序列化:将java对象转换为字节序列。 反序列化:把字节序列回复为原先的java对象。

下面我们来看一下具体的用法

package yanf.base;


import java.io.*;


public class XLHDemo {
    public static void main(String[] args) throws IOException, ClassNotFoundException {
        //调用序列化
        serialize();
        //调用反序列化
        deserialize();
    }

    /**
     * 对象序列化示例
     */
    public static void serialize() throws IOException {
        Book b = new Book("《唐诗三百首》", "《唐诗三百首》共选入唐代诗人77位,其中五言古诗33首,乐府46首,七言古诗28首,七言律诗50首,五言绝句29首,七言绝句51首,诸诗配有注释和评点。 ");
        //序列化
        ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("d://book.txt"));
        oos.writeObject(b);
        //关闭对象输出流
        oos.close();
        System.out.println("序列化完成!已生成book.txt文件。");
        System.out.println("------------------------------------------------");
       
    }

    /**
     * 对象反序列化示例
     */
    public static void deserialize() throws IOException, ClassNotFoundException {
        //反序列化
        ObjectInputStream objectInputStream =
                new ObjectInputStream(new FileInputStream(new File("d://book.txt")));
        Book book = (Book) objectInputStream.readObject();
        objectInputStream.close();

        System.out.println("反序列化完成!结果如下:");
        System.out.println(book);
    }

    /**
     * 对象实现序列化
     */
    static class Book implements Serializable {
        //书名
        private String name;
        //内容
        private String info;

        public Book(String name, String info) {
            this.name = name;
            this.info = info;
        }

        public Book() {
        }

        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;
        }

        @Override
        public String toString() {
            return "Book{" +
                    "name='" + name + ''' +
                    ", info='" + info + ''' +
                    '}';
        }
    }
}


运行结果:

image.png