JavaSE IO流 Vol.4 处理流 入门
1. 前言
· IO 流 专题 传送门:
· JavaSE IO流 Vol.2 节点流 - 输入流 入门
· JavaSE IO流 Vol.3 节点流 - 输出流 入门
· 本文章是用于 个人学习过程中 整理知识点的帖子,主题为:JavaSE IO流 Vol.4 处理流 入门
· 本文章会根据不同类型的处理流进行 实例演示,以巩固区分不同处理流的功能和日常开发使用 。
· 本文章出现的 遗漏、错误 欢迎点开这篇文章的各位指出。
· 本文章的知识大纲根据 韩顺平老师 JavaSE 教学视频 进行编写。
【感谢韩顺平老师带来的优质教学和对教育作出的贡献】
2. 处理流
● 缓冲流
· BufferedInputStream
· BufferedOutputStream
· BufferedReader
· BufferedWriter
· 实例:文件拷贝
· 下面就根据 使用 字节缓冲流 、字符缓冲流 拷贝文件 进行演示:
● 字节缓冲流 拷贝文件 ●
● 字符缓冲流 ●
● 对象流
· ObjectInputStream
· ObjectOutputStream
· 实例:序列化和反序列化
· 序列化:在保存数据时,保存数据的值和数据类型 。
· 反序列化:在恢复数据时,恢复数据的值和数据类型 。
● 使用方式 ●
· 要让某个对象支持序列化机制,则必须让其类声明为 可序列化 。
· 目标类必须满足以下接口的任何一个:
① Serializable
② Externalizable
· 另外,我们常用的数据类型几乎都实现了 Serializable 接口 。
● 相关类 ●
· 对象流:ObjectInputStream 类 和 ObjectOutputStream 类
· 它们提供了对基本类型或对象类型的序列化和反序列化方法 。
· 下面就进行 序列化反序列化 的相关操作:
● 重要细节 ●
· 反序列化的数据读写顺序要和序列化数据一致 。
· 序列化对象会将所有属性进行序列化,除了 static 或 transient 修饰的成员。
· 序列化对象要求里面属性的类型也需要实现序列化接口 。
· 序列化具有可继承性,父类序列化,子类也会默认序列化 。
● 转换流
· InputStreamReader
· OutputStreamWriter
· 实例:指定编码格式读写
· 我们已经知道可以通过字符流来解决乱码问题,但前提是统一了编码格式:UTF-8 。
· 在很多情况中,我们将面临对不同编码格式的文件的读写操作,此时依旧会出现乱码问题 。
· 我们需要对读写文件的编码格式进行一个规定,于是引出了转换流 。
● 相关类 ●
· 对象流:InputStreamReader 类 和 OutputStreamWriter 类
· 这两个类的翻译:字节 字符输入流 、 字节 字符输出流 。
· 顾名思义:就是字节转换成字符的过程,同时提供了指定编码格式的方法 。
· 下面就进行 指定编码格式 的相关操作: