字节流
读到一个字节就返回一个字节。
字节流处理单元为 1 个字节。
字节流可以处理所有类型数据, 如:图片,MP3,AVI 视频文件
字符流
字符流使用了字节流读到一个或多个字节时,先去查指定的编码表,将查到的字符返回。
字符流处理的单元为 2 个字节的 Unicode 字符
字符流只能处理字符数据。只要是处理纯文本数据,就要优先考虑使用字符流。
既然有了字节流,为什么还需要字符流?
在读取程序的配置文件:json,yaml,properties等文件时,我们肯定不希望是获取字节流形式,而是想要获取其字符形式。
通常,如果不使用字符流但是我们需要字符流的时候就利用InputStreamReader和InputStreamWriter这两个类来将字节流进行转换得到字符流,这个过程需要JVM进行转换,是非常耗时的,同样假如我们不知道编码方式就很容易出现乱码的问题。