java序列化流

本文涉及的产品
系统运维管理,不限时长
简介: java序列化流

把对象以流的方式写入到文件中保存,叫做写对象,也叫对象的系列化 writeObject§

ObjectOutputStream 对象的序列化流

构造方法

ObjectOutputStream(OptputStream out) 创建指定的 ObjectOutputStream的objectOutputStream

参数

OptputStream out 字节输出流

特有的成员方法

void writeObject(object obj) 将指定的对象写入objectOutputStream中

使用步骤

创建objectOutputStream对象构造方法中传递字节输出流

使用objectOutputStream对象中的方法writeobject把对象写入到文件中

资源释放

ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("D:\\lianxi\\lianxi1\\oo.txt"));
oos.writeObject(new Jjcid("小美女",18));
oos.close();


注意:序列化和反序列化的时候会抛出没有序列化的异常

通过实现 Serializable接口以启动其序列化功能,未实现此接口的类无法序列化或反序列化

public class Jjcid implements Serializable {


把文件中保存的对象,以流的方式读取出来,叫做读对象,也叫对象的反序列化 readObject()

ObjectInputStream类

构造方法

ObjectInputStream(InputStream in)创建指定InputStream 读取objInputStream

参数

InputStream in 字节输入流

特有的成员方法

object readObj() 读取对象

使用步骤

创建ObjectInputStream对象,构造方法中传递字节输入流

使用ObjectInputStream对象中的方法readobject读取保存对象的文件

释放资源

使用读取出来的对象打印看看

注意:必须存在类对应的class文件

加上一个序列号代码

private static final long serialVersionUID = 1L;


ObjectInputStream ois = new ObjectInputStream(new FileInputStream("D:\\lianxi\\lianxi1\\oo.txt"));
Object o = ois.readObject();
ois.close();
Jjcid j = (Jjcid)o;
System.out.println(j);


序列化集合

当我们想在文件中保存多个对象的时候

可以把多个对象储存到一个集合中

对集合进行序列化和反序列化

步骤

创建一个Person对象的ArrayList集合

在ArrayList集合中存储Person对象

创建一个序列化流ObjectOutputStream对象

使用ObjectOutputStream对象中的方法writeObject对集合进行序列化

创建一个反序列化ObjectInputStream对象

使用反序列化ObjectInputStream对象方法readObject读取文件中保存的集合

把Object类型的集合转换成ArrayList类型集合

释放资源

ArrayList<Person> list = new ArrayList<>();
list.add(new Person("张三",18));
list.add(new Person("李四",19));
list.add(new Person("王五",17));
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("D:\\lianxi\\lianxi1\\1.txt"));
oos.writeObject(list);
ObjectInputStream ois = new ObjectInputStream(new FileInputStream("D:\\lianxi\\lianxi1\\1.txt"));
Object o = ois.readObject();
ArrayList<Person> list1 = (ArrayList<Person>) o;
for (Person p : list1) {
    System.out.println(p);
}
ois.close();
oos.close();


打印流 printStream

特有方法

void print(任意类型的值)

void print(任意类型的值并换行)

构造方法

printStream(File file) 输出文件目的地是个文件

printStream(OutputStream out) 输出目的地是字节输出流

printStream(String fileName) 输出目的地是一个路径


相关文章
|
2天前
|
存储 安全 Java
day23:Java零基础 - 反序列化
【7月更文挑战第23天】🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
11 2
|
3天前
|
存储 安全 Java
day22:Java零基础 - 序列化
【7月更文挑战第22天】🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
10 3
|
3天前
|
自然语言处理 安全 Java
Substrate VM如何处理Java序列化
Substrate VM如何处理Java序列化
|
21天前
|
分布式计算 Java 数据库
Java中的序列化与反序列化详解
Java中的序列化与反序列化详解
|
21天前
|
存储 Java 开发者
Java中的对象序列化详解
Java中的对象序列化详解
|
1月前
|
Java
JAVA单例模式-双重检验锁(防止反射、序列化多个)
JAVA单例模式-双重检验锁(防止反射、序列化多个)
24 1
|
1月前
|
网络协议 Java API
【Java】序列化和反序列化
【Java】序列化和反序列化
21 4
|
20天前
|
JSON NoSQL Java
Redis18的Java客户端-StringRedisTemplate,序列化存在的问题,使用StringRedisTemplate解决序列化的方法
Redis18的Java客户端-StringRedisTemplate,序列化存在的问题,使用StringRedisTemplate解决序列化的方法
|
24天前
|
XML JSON 缓存
优化Java中XML和JSON序列化
优化Java中XML和JSON序列化
|
27天前
|
存储 Java 数据库
Java中序列化与反序列化详解
Java中序列化与反序列化详解
15 0