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

Java中的字节流与字符流,一直都是java开发人员比较容易混淆的技术,希望这篇文章可以从此解决你的困惑 。
先看下字符流与字节流家族:
字节流:

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

文章插图
(A)FileOutputStream(File name) 创建一个文件输出流,向指定的 File 对象输出数据 。
(B)FileOutputStream(FileDescriptor) 创建一个文件输出流,向指定的文件描述器输出数据 。
(C)FileOutputStream(String name) 创建一个文件输出流,向指定名称的文件输出数据 。
(D)FileOutputStream(String, boolean) 用指定系统的文件名,创建一个输出文件 。
字符流:
字节流与字符流的区别详解 字符流和字节流的区别

文章插图
在字符流中,有两个特殊的类InputStreamReader 和 OutputStreamReader,这两个类可以实现字节流转化为字符流 。
那么到底使用字节流还是字符流呢,可以通过如下两个场景区分?
一、字符流(Reader和 Writer):中文,字符是只有在内存中才会形成的,操作字符、字符数组或字符串 。一句话凡是可以在txt文档中看懂的都用字符流 。
二、字节流(InputStream 和OutputStream):音频文件、图片、歌曲,所有的硬盘上保存文件或进行传输的时候,操作字节和字节数组或二进制对象 。一句话凡是看不懂的都用字节流 。
例如要实现一个图片的复制功能,那一定就是用字节流了 。
【字节流与字符流的区别详解 字符流和字节流的区别】在Java中字节流与字符流具有非常多的类,很容易混淆不知道用哪个,实际上Java中的文件操作类,采用了装饰者的Java设计模式 。可以去自学下装饰者模式,将会对java的文件操作类具有非常深入的了解了 。