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