字节流和字符流的区别
字节流
**数据单位:**Byte为单位进行数据传输和处理。
**应用场景:**适用于所有类型的文件,包括视频、视频、音频等二进制文件,以及文本文件。
比如InputStrem和子类(FileInputStream,BufferedInputStream)
比如OutputStream和子类(FileOutputStream、BufferdOutPutSteam)
字符流
**数据单位:**以字符为单位,处理时会处理字符编码和解码的问题(如UTF-8)
**用途:**用来处理文本数据。
**常见类:**Reader和子类 FileReader、BufferedReader
Writer和子类 FileWriter和 BufferedWriter
为什么字符流不能处理文件
因为字符流主要的作用就是处理文本数据,而不是二进制数据,虽然可以使用字符流来传输文件,但是在传输二进制可能会有一些问题。
字符编码问题
字符流通常会使用字符编码来读取和写入文本数据,如果文件中包含非文本数据(图片、视频),字符编码可能导致我们数据损坏或无法正确解析。
性能问题:
字符流通常是基于字符的写入和读取,这意味着他们不能高效的处理大量数据,相比之下字节流更适合,因为他可以直接操作字节,不需要字符编码转换(字符流会根据字符编码把二进制数据转换为字符)。
文本处理特性
字符流提供了许多文本处理特征,比如字符集转换,换行符的处理。但是对二进制文件来说这些特性是不必要的。