DataOutputStream(了解)
基本概念:
java.io.DataOutputStream类主要用于以适当的方式将基本数据类型写入输出流中。
常用方法:
DataInputStream(了解)
基本概念:
java.io.DataInputStream类主要用于从输入流中读取基本数据类型的数据。
常用方法:
ObjectOutputStream(重点)
基本概念:
java.io.ObjectOutputStream类主要用于将一个对象的所有内容整体写入到输出流中。
只能将支持 java.io.Serializable 接口的对象写入流中。
类通过实现 java.io.Serializable 接口以启用其序列化功能。
所谓序列化主要指将一个对象需要存储的相关信息有效组织成字节序列的转化过程。
常用方法:
ObjectInputStream(重点)
基本概念:
- java.io.ObjectInputStream类主要用于从输入流中一次性将对象整体读取出来。
- 所谓反序列化主要指将有效组织的字节序列恢复为一个对象及相关信息的转化过程。
常用方法:
序列化版本号:
序列化机制是通过在运行时判断类的serialVersionUID来验证版本一致性的。在进行反序列化时,
JVM会把传来的字节流中的serialVersionUID与本地相应实体类的serialVersionUID进行比较,如
果相同就认为是一致的,可以进行反序列化,否则就会出现序列化版本不一致的异常
(InvalidCastException)。
transient关键字:
transient是Java语言的关键字,用来表示一个域不是该对象串行化的一部分。当一个对象被串行
化的时候,transient型变量的值不包括在串行化的表示中,然而非transient型的变量是被包括进
去的。
经验分享:
当希望将多个对象写入文件时,通常建议将多个对象放入一个集合中,然后将集合这个整体看做一
个对象写入输出流中,此时只需要调用一次readObject方法就可以将整个集合的数据读取出来,
从而避免了通过返回值进行是否达到文件末尾的判断。
RandomAccessFile类
基本概念:
java.io.RandomAccessFile类主要支持对随机访问文件的读写操作
常用方法: