详解 字符流

(请观看本人博文——《详解 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

原文地址:https://www.cnblogs.com/codderYouzg/p/12418532.html