1 序列化和反序列化

1.1 ObjectOutputStream 序列化

1.1.1 概述

  • ObjectOutputStream将Java对象的基本数据写入OutputStream,可以使用ObjectInputStream读取对象。
  • 通过在流中使用文件可以实现对象的持久存储。
  • 如果流是Socket,则可以在另一台主机上火另一个进程中重构对象。

1.1.2 构造方法

  • 创建写入指定OutputStream的ObjectOutputStream
public ObjectOutputStream(OutputStream out)  throws IOException

1.1.3 方法

  • 将指定对象写入ObjectOutputStream
public final void writeObject(Object obj) throws IOException

1.2 ObjectInputStream 反序列化

1.2.1 概述

  • ObjectInputStream对以前使用ObjectOutputStream写入的基本数据和对象进行反序列化。

1.2.2 构造方法

  • 创建从指定InputStream读取的ObjectInputStream
public ObjectInputStream(InputStream in) throws IOException

1.2.3 方法

  • 从ObjectInputStream中读取对象
public final Object readObject()  throws IOException, ClassNotFoundException

1.3 示例

  • 示例:序列化对象
package java20;

import java.io.Serializable;

/**
 * 2017/10/15
 * 说明:
 */
public class Person implements Serializable {
    private String name;
    private int age;

    public Person() {
    }

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}
package java20;

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;

/**
 * 2017/10/15
 * 说明:
 */
public class ObjectOutputStreamDemo {
    public static void main(String[] args) throws IOException {
        ObjectOutputStream os = new ObjectOutputStream(new FileOutputStream("person.txt"));

        os.writeObject(new Person("张三",50));

        os.close();

    }
}
  • 示例:反序列化
package java20;

import java.io.FileInputStream;
import java.io.IOException;
import java.io.ObjectInputStream;

/**
 * 2017/10/15
 * 说明:
 */
public class ObjectInputStreamDemo {
    public static void main(String[] args) throws IOException, ClassNotFoundException {
        ObjectInputStream oi = new ObjectInputStream(new FileInputStream("person.txt"));

        Person p = (Person) oi.readObject();

        System.out.println(p.getName());
        System.out.println(p.getAge());

    }
}

最新文章

  1. React Native学习笔记之2
  2. 求单链表L各结点的阶乘之和(c语言)
  3. 扫描仪API接入大全:Twain, WIA 或 两者不具有.[换个思路 春暖花开]
  4. 3dmax导出3ds具有过多要导出的面超过64k解决方法
  5. unity 常用函数
  6. 配置域主DNS服务器
  7. 打通B/S与C/S !让HTML5 WebSocket与.NET Socket公用同一个服务端!
  8. A Practical Guide to Distributed Scrum - 分布式Scrum的实用指南 - 读书笔记
  9. C# 部分关键字
  10. Java Word Ladder(字梯)
  11. Oracle杀死死锁进程
  12. 关于jquery选择器中:first和:first-child和:first-of-type的区别及:nth-child()和:nth-of-type()的区别
  13. 项目的ip地址更改,用git从远程提取代码出现错误,提示为 network error connection timed out
  14. PoolEntry 参数讲解
  15. 利用requirejs实现vue的模块化开发
  16. Windows10系统:任务栏中电池图标消失问题的解决方法
  17. windows下安装php reids扩展
  18. 浏览器渲染页面的时候,不同的script块之间的关系
  19. 从零开始学安全(二十三)●用PHP编写留言板
  20. mysql创建用户与pymsql模块

热门文章

  1. SQL Server-聚焦什么时候用OPTION(COMPILE)呢?
  2. JSP中的“小饼干”Cookie,用来存储数组的方式(下方已String类型的数组为例:)
  3. 通过yum安装mysql数据
  4. [转]正则匹配时对象必须为string or bytes-like object
  5. mongodb 聚合查询
  6. c++2(循环和递归)
  7. castle之动态代理
  8. jq实现上传头像并实时预览功能
  9. qt中moc的作用
  10. Laravel 验证中文本地化