美文网首页后端小树林
java 读写二进制数据与java序列化

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

作者: 奔跑的蛙牛 | 来源:发表于2018-08-11 17:38 被阅读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的相关知识点和用途

重点

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

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


共享秘书

下面是相关算法

  • 对遇到的每一个对象都关联一个序列号
  • 对于每个对象,第一次遇到时都把它保存到对象数据流中
  • 如果对象之前被保存过,那么只写出“与之前保存过的序列号为x的对象相同”
  • 对于流中的对象,在第一次遇到其序列号时,构建它,并使用流中的数据初始化它,然后记录这个新序号和对象之间的关联
  • 当遇到 “保存过的序列号为x的对象相同”,获取这个顺序号相关联的对象引用

具体实现结果 查看代码

相关文章

  • 高性能Java序列化框架Fse发布

    高性能Java序列化框架Fse发布 [TOC] 使用场景 将Java对象序列化为二进制数据进行保存,以及二进制数据...

  • Serializable中为什么要设置UID

    1、什么是Java序列化与反序列化 Java序列化是指把Java对象保存为二进制字节码的过程,Java反序列化是指...

  • 认识Java序列化

    我的个人博客,认识Java序列化 引言 将 Java 对象序列化为二进制文件的 Java 序列化技术是 Java ...

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

    DataOutput 接口定义如下几种方式已二进制格式读写数据 从文件中读取二进制数据 DataOutputSre...

  • urldns利用链分析

    java序列化与反序列化 java 序列化与反序列化 为了更好的存放传输一些数据,往往会将一些数据进行序列化,需 ...

  • Java 序列化

    Java序列化是指把Java对象保存为二进制字节码的过程,Java反序列化是指把二进制码重新转换成Java对象的过...

  • Java对象序列化底层原理源码解析

    What Java序列化是指把Java对象保存为二进制字节码的过程,Java反序列化是指把二进制码重新转换成Jav...

  • 序列化与反序列化1

    一、什么是序列化与反系列化? 序列化是将对象转换为二进制形式的数据(如Java中的byte数组),反序列化是再将二...

  • Java基础学习之序列化

    序列化 将数据结构或对象转换成二进制串的过程。 序列化方案 Serializeble Java序列化方案 在Jav...

  • Android基础之序列化

    序列化 将数据结构或对象转换成二进制串的过程。 序列化方案 Serializeble Java序列化方案 在Jav...

网友评论

    本文标题:java 读写二进制数据与java序列化

    本文链接:https://www.haomeiwen.com/subject/elmkbftx.html