详解 字符流
(请观看本人博文——《详解 I/O流》)
在讲解所有内容之前,本人要先强调一点:
(当我们用字符流处理信息时,一定要记得调用flush()方法!)
字符流
继承体系:
本人首先来展示下这个类的继承体系:
(上图仅展示部分子类)
同样地,字符流的子类很好辨认:
凡是以Reader 或 Writer 为结尾的Java内置工具类都是字符流的子类
本人在讲解字节流的时候说过:
I/O流操作文件时用的都是字节流,
而且字符流只能用于操作文本文件,
那么,为什么要存在字符流呢?
字符流出现的原因:
因为一个中文汉字占两个字节(GBK),
如果使用字节流操作,那么我们就需要对这个汉字进行拆分和合并,这样操作起来十分麻烦。
所以,Java为了方便操作中文,就提供了 字符流
现在,本人来讲解下 字符流的本质:
字符流 = 字节流 + 编码表(即:根据编码表 对 中文汉字 进行 拆分和合并)
那么,什么又是编码表呢?
本人来列举几个我们常见的编码表:
常见的编码表:
- ASCII
- GB2312
- GBK
- UNICODE(usc-2, usc-4)
- UTF-8
那么,现在本人来讲解一个很常见的问题 —— 编码和解码:
请观看本人博文——《详解 编码和解码》
相信看了上篇博文的同学已经明白了关于编码的知识点。
那么,现在,本人就来讲解下 字符流的子类:
首先是 字符转换流:
字符转换流:
请观看本人博文 —— 《详解 字符转换流》
那么,现在,本人来讲解下 字符便捷流:
字符便捷流:
本人先来讲解下 转换流 与 便捷流 的应用场景:
FileReader 用于读取字符流,但无法自己设定编码
要读取原始字节流,请考虑使用 FileInputStream
请观看本人博文 —— 《详解 字符便捷流》
最后,本人再来讲解下 字符缓冲流:
字符缓冲流:
请观看本人博文 —— 《详解 字符缓冲流》
(本人 I/O流总集篇 博文链接:https:////www.cnblogs.com/codderYouzg/p/12418404.html)