后端小树林

java 读写二进制数据与java序列化

2018-08-11  本文已影响0人  奔跑的蛙牛

DataOutput 接口定义如下几种方式已二进制格式读写数据

方法

从文件中读取二进制数据

DataOutputSream out = new DataOutputStream(new FileInputSream("xx.dat"))

随机访问文件

RandomAccessFile类可以在文件中的任何位置查找或写入数据

zip文档

zip文档以压缩格式存储一个和多个文件,每个ZIP文件都有一个头,包含每个文件的名字和压缩方法等信息

对象流与序列化

需要存储相同类型的数据,使用固定长度存储是一个不错的选择

java 语言支持对象序列化的通用机制,可以将任何对象写入到流当中,并在之后将其读回
为了保存对象数据,首先需要打开一个ObjectOutputStrem对象

  ObjectOutStream out = new ObjectOutputStream(new FileOutputStream("employee.dat"))
// 保存对象数据
Employee harry = new Employee("Harry Hacker",50000,1989,10,1);
Manager boss = new Manager("Carl Cracker",80000,1987,12,15);
out.writeObject(harry);
out.writeObject(boss);
// 读回对象数据
ObjectInputStream in = new ObjectInputStream(new FileInputStream("employee.dat"));
// 然后用 readObject方法以这些对象写入的顺序获得他们
Employee e1 = (Emloyee) in.readObject();
Employee e2 = (Employee) in.readObject();
// 如果希望在对象流中存储或者恢复所有的类都应进行一下修改,这些类必须实现Serializable接口
class Employee implements Serializable { ... }

这里再讲解一下序列化

一个类只有实现Serializable接口才能被序列化
什么是序列化:将对象的状态信息转换为可以传输和存储的过程,想对象此时的状态信息写出临时缓冲区或者永久缓冲区,日后需要的时候再转化为对象,重新使用
Serializable主要用来支持两种主要的特性:

  1. Java的RMI(remote method invocation),RMI允许像在本机上一样操作远程机器上的对象,当发送消息给远程对象时,就需要用到序列化机制来发送参数和接受返回值

  2. Java的JavaBean,Bean的状态信息通常是在设计时配置的,Bean的状态信息必须被保存下来,以便当程序运行时能恢复这些状态信息,这也需要序Serializable机制

这个图片serializable的相关知识点和用途

重点

不了解的话请查阅或者@我

如果一个普通员工是两个经理的秘书,这种共享对象该如何存储


共享秘书

下面是相关算法

具体实现结果 查看代码

上一篇下一篇

猜你喜欢

热点阅读