zoukankan      html  css  js  c++  java
  • 序列化和反序列化

    序列化和反序列化

    序列化就是可以把一个对象保存到磁盘中或发送到其他的服务器

    反序列化就是把序列化生成的信息, 恢复对象! 序列化和反序列化一般不适用多态的形式创建对象, 否则可能无法使用writeObject()readObject()方法

    下面序列化和发序列化需要使用的类

    class Student implements Serializable{
    
    	// 2. 自动 生成本文件的唯一标识, 版本号ID
    	private static final long serialVersionUID = 1L;
    	// 属性
    	private String name;
    	private int age;
        
    	// get, set, 有参, 无参, toString()方法...
        
    }
    

    序列化 - ObjectOutputStream

    java.io.ObjectOutputStream (序列化, 是OutputStream的一个子类)

    需要序列化的的类必须实现Serializable接口作为标记, 否则无法进行实例化

    构造器

    方法 说明
    ObjectOutputStream(OutputStream 一般传入OutputStream的实现类

    常用方法

    返回值 方法 说明
    void writeObject(Object obj) 将指定的对象写入 ObjectOutputStream。

    序列化实例:

    try {
        Student s = new Student("张三", 22);
        // 创建对象
        String path = "D:\DEV\eclipse\workspace\day14\class.txt";
        ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(path));
        // 开始序列化
        out.writeObject(s);
        // 释放资源
        out.close();
    } catch (IOException e) {
        e.printStackTrace();
    }
    

    生成的文件内容:

    反序列化 - ObjectInputStream

    java.io.ObjectInputStream (反序列化, 是InputtStream的一个子类)

    构造器

    方法 说明
    ObjectInputStream(InputStream in) 一般传入InputStream的实现类

    常用方法

    返回值 方法 说明
    Object readObject() 读取对象,读取序列化数据。

    反序列化实例:

    try {
        String path = "D:\DEV\eclipse\workspace\day14\class.txt";
        // 创建对象
        ObjectInputStream in = new ObjectInputStream(
            new FileInputStream(path)
        );
        // 开始反序列化
        Object obj = in.readObject();
        Student s = (Student) obj;
        System.out.println(obj);
        System.out.println(s.getName());
        // 释放资源
        in.close();
    } catch (IOException | ClassNotFoundException e) {
        e.printStackTrace();
    }
    

    结果:

    Student [name=张三, age=22]
    张三
    
  • 相关阅读:
    《破茧成蝶》读书笔记——价值
    《破茧成蝶》读书笔记——技能(2)
    《破茧成蝶》读书笔记——技能(1)
    《破茧成蝶》读书笔记——信念
    《HeadFirst:HTML & CSS(第二版)》——开篇废话
    图片旋转方法
    uploadify 3.0 详细使用说明
    提高mysql千万级大数据SQL查询优化30条经验(Mysql索引优化注意)
    Sql 中 不等于'<>'与 NULL
    c#中获取存储过程的返回值(return Value)
  • 原文地址:https://www.cnblogs.com/zpKang/p/12917760.html
Copyright © 2011-2022 走看看