详解 字符流

(请观看本人博文——《详解 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://blog.csdn.net/weixin_45238600/article/details/104153031

发布了133 篇原创文章 · 获赞 82 · 访问量 6010

猜你喜欢

转载自blog.csdn.net/weixin_45238600/article/details/104219482
今日推荐