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]
    张三
    
  • 相关阅读:
    iOS遍历程序内某个文件夹下所有文件的属性
    CATransition 转场动画
    Xcode安装的推送证书所在目录
    UIMenuController 实现长按显示自定义菜单功能
    ios调用第三方程序打开文件,以及第三方调用自己的APP打开文件
    购物车界面,不同section,点击增减物品,确定取消选中的逻辑判断
    iOS UINavigationController
    iOS9 URL Schme 白名单
    iOS9 HTTPS
    iOS9 后台定位
  • 原文地址:https://www.cnblogs.com/zpKang/p/12917760.html
Copyright © 2011-2022 走看看