java中的字节流和字符流一直是令Java开发人员困惑的技术。希望这篇文章能从此解决你的困惑。
让我们先来看看字符流和字节流系列:
字节流:
(A)FileOutputStream(文件名)创建一个FileOutputStream并将数据输出到指定的File对象。
(b)文件输出流(文件描述符)创建一个文件输出流,并将数据输出到指定的文件描述符。
(C)FileOutputStream(字符串名)创建一个FileOutputStream,将数据输出到指定名称的文件中。
(d) FileOutput Stream (string,boolean)用指定系统的文件名创建一个输出文件。
字符流:
在字符流中,有两个特殊的类,InputStreamReader和OutputStreamReader,可以将字节流转换为字符流。
那么是用字节流还是字符流,可以通过以下两种场景来区分?
1.字符流(读写器):中文,字符只在内存中形成,操作字符、字符数组或字符串。总之,txt文档里凡是能看懂的都用字符流。
二、字节流(InputStream和OutputStream):音频文件、图片、歌曲。当文件在所有硬盘上保存或传输时,操作的是字节和字节数组或二进制对象。一句话你看不懂的都用字节流。
比如复制一张图片,必须是字节流。
在Java中,单词节流和字符流有很多种类,所以很容易混淆使用哪一种。事实上,Java中的文件操作类采用了decorator的Java设计模式。可以自学decorator模式,对java的文件操作类会有非常深刻的理解。