字节流还是字符流

Posted justPassBy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了字节流还是字符流相关的知识,希望对你有一定的参考价值。

我的个人主页:http://www.alphaway.org

以下说的流都是文件流。

字节流和字符流的区别

文件在磁盘上的存储是按二进制存储的,也即按字节存储的。
所以字节流就是相当于一个管道连通了应用程序和磁盘上的文件,每次读取都是以字节为单位。
而字符流虽然也相当于一个管道连通了应用程序和磁盘上的文件,但是该管道自带过滤效果,即根据编码,将字节组装成不同的字符。
为什么需要过滤呢,因为你存的时候是根据编码存的,所以读的时候自然也要根据编码读呗。

何时使用字节流字符流

如果你所要读的文件是与编码无关的,比如图像啊,视频啊, 那么就用字节流。 或者虽然你要读的文件与编码有关,但是你读的目的既不是为了显示,又不是为了使用其中的某个字符,而是为了拷贝复制,那么也是可以使用字节流的。
那么什么时候使用字符流就很显然了, 你要读的文件与编码有关,且读的目的是为了显示或者得到其中的某个字符,那么当然使用字符流了。

Java是如何识别有编码的文件的

如果是输入流,创建InputStreamReader对象时,需要传入一个字节流和指定字符编码。InputStreamReader内部根据字节流和字符编码,生成StreamDecoder对象,该对象会根据字符编码将若干个字节解码为一个字符。
如果是输出流,创建OutputStreamWriter对象时,需要传入一个字节流和指定字符编码。OutputStreamWriter内部根据字节流和字符编码,生成StreamEncoder对象,该对象会根据字符编码将一个字符编码成若干个字节。

以上是关于字节流还是字符流的主要内容,如果未能解决你的问题,请参考以下文章

IO流 字节输入输出流概念理解以及适用环境

chapter_21字节流字符流

java读取文件问题该选字节流还是字符流?

Java字节流和字符流,是时候总结一下IO流了

java 字节流和字符流的区别

字节流与字符流的区别详解