字节流与字符流的区别
相同点
字符流和字节流都有缓冲的实现类,提高了读写的效率:
1 | 字符流:BufferedReader、BufferedWriter |
类层次图
区别
| 项 | 字节流 | 字符流 |
|---|---|---|
| 操作基本单元 | 字节 | 字符(Unicode 码元) |
| 存在位置 | 可存在于文件、内存中。硬盘上的所有文件都是以字节形式存在的。 | 只存在于内存中。 |
| 使用场景 | 适合操作文本文件之外的文件。例:图片、音频、视频。 | 适合操作文本文件时使用。 |
| Java 相关类 | InputStream、OutputStream 等。 | Reader、Writer 等。 |
正确用法是:Java 使用字符流读取文本文件,使用字节流读取非文本文件。
原因是:
字符流读文本文件时可以自动处理文件编码,确保正确地解析文件中的字符。
使用字符流读取非文本文件可能会导致一些问题。例如,字符流可能会将一些特定的字节序列(如 0x0A)视为文件的行结尾,从而导致数据丢失。所以在读取这些文件时使用字节流比字符流更好。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 From Zero to Hero!
