原文网址:Java--IO--字节流与字符流的区别_IT利刃出鞘的博客-CSDN博客
简介
本文介绍Java中字节流和字符流的区别。
相同点
字符流和字节流都有缓冲的实现类,提高了读写的效率:
字符流:BufferedReader、BufferedWriter
字节流:BufferedInputStream、BufferedOutputStream
区别
项 | 字节流 | 字符流 |
操作基本单元 | 字节 | 字符(Unicode码元) |
存在位置 | 可存在于文件、内存中。 硬盘上的所有文件都是以字节形式存在的。 | 只存在于内存中。 |
使用场景 | 适合操作文本文件之外的文件。 例:图片、音频、视频。 | 适合操作文本文件时使用。 |
Java相关类 | InputStream、OutputStream等。 | Reader、Writer等。 |
正确用法是:Java使用字符流读取文本文件,使用字节流读取非文本文件。
原因是:
- 字符流读文本文件时可以自动处理文件编码,确保正确地解析文件中的字符。
- 使用字符流读取非文本文件可能会导致一些问题。例如,字符流可能会将一些特定的字节序列(如0x0A)视为文件的行结尾,从而导致数据丢失。所以在读取这些文件时使用字节流比字符流更好。