一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第14天,点击查看活动详情。
1、什么是序列化?
将对象的状态信息转换为可以存储或传输的形式的过程就是序列化。比如记录围棋棋盘,可以使用多维数组。棋盘对象转换成多维数组的过程就叫序列化,而通过多维数组转换成围棋的过程就叫做反序列化。 对象可以被序列化也可以展开。对象有状态和行为两种属性,行为存在于类中,状态则存在于单个的对象中, 而存储和读取,势必会使用IO流。
2、将序列化对象写入文件
FileOutputStream fileOutputStream = new FileOutputStream("Serialization.txt");//创建存取文件的FileOutputStream对象,将字节写入文件
ObjectOutputStream os = new ObjectOutputStream(fileOutputStream);//这东西能让你写入对象,但无法直接地连接文件,所以需要参数。把对象转换成可以写入串流的数据
//对象被打成串流送到FileOutputStream写入数据
os.writeObject(new Object());//将对象序列化并写入Serialization.txt 文件
os.writeObject(new Object());
os.writeObject(new Object());
os.close();//关闭关联的输出串流
FileOutputStream
是连接类型的串流,代表来源与目的地之间的连接,用处就是将串流与其他串流连接起来。一般而言,串流都是成对出现的,一个表示连接(FileOutputStream
),另一个则被调用方式实现功能。
连接串流一般都是低层次的,虽然有写入字节的方法,但通常不会使用,而是用对象层次的观点来写入,所以需要高层的连接串流(ObjectOutputStream
)