序列化流与反序列化流

序列化是把对象特性保存到物理介质上,反序列化是把保存在物理介质上的对象取出还原成对象。

能被序列化的对象所属的类必须实现Serializable接口。

1、对象序列化流ObjectOutputStream

构造方法:

ObjectOutputStream(OutputStream out):创建写入指定OutputStream的ObjectOutputStream

方法:

void writeObject(Object obj):将指定的对象写入ObjectOutputStream

Person类

复制代码
 1 package io;
 2 
 3 import java.io.Serializable;
 4 
 5 public class Person implements Serializable {
 6     private String name;
 7     private int age;
 8     
 9     public Person() {
10         super();
11     }
12 
13     public Person(String name, int age) {
14         super();
15         this.name = name;
16         this.age = age;
17     }
18 
19     public String getName() {
20         return name;
21     }
22 
23     public void setName(String name) {
24         this.name = name;
25     }
26 
27     public int getAge() {
28         return age;
29     }
30 
31     public void setAge(int age) {
32         this.age = age;
33     }
34 
35     @Override
36     public String toString() {
37         return "Person [name=" + name + ", age=" + age + "]";
38     }
39     
40 }
复制代码
复制代码
 1 package io;
 2 
 3 import java.io.FileOutputStream;
 4 import java.io.IOException;
 5 import java.io.ObjectOutputStream;
 6 
 7 public class ObjectOutputStreamDemo {
 8 
 9     public static void main(String[] args) throws IOException {
10         // 创建关联数据源的字节输出流对象
11         FileOutputStream fos = new FileOutputStream("e:\\javaIOTest\\per.txt");
12         // 给操作文件的字节输出流添加写入对象功能
13         ObjectOutputStream oos = new ObjectOutputStream(fos);
14         // 调用写入对象方法
15         oos.writeObject(new Person("alphajuns", 23));
16         // 关闭资源
17         oos.close();
18     }
19 
20 }
复制代码

2、对象反序列化流ObjectInputStream

构造方法:

ObjectInputStream(InputStream in):创建从指定InputStream读取的ObjectInputStream

方法:

readObject():从ObjectInputStream读取对象

复制代码
 1 package io;
 2 
 3 import java.io.FileInputStream;
 4 import java.io.IOException;
 5 import java.io.ObjectInputStream;
 6 
 7 public class ObjectInputStreamDemo {
 8 
 9     public static void main(String[] args) throws IOException, ClassNotFoundException {
10         // 创建关联数据源的字节输入流
11         FileInputStream fis = new FileInputStream("e:\\javaIOTest\\per.txt");
12         // 创建读取对象的反序列化流
13         ObjectInputStream ois = new ObjectInputStream(fis);
14         // 读取对象
15         Person obj = (Person) ois.readObject();
16         System.out.println(obj.toString());
17         // 关闭资源
18         ois.close();
19     }
20 
21 }
复制代码

 

posted @   AlphaJunS  阅读(214)  评论(0编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示