字节流和字符流
2022-08-31 22:29:06
请解释什么是字节流和字符流。这些到底是什么意思?Microsoft Word 文档是面向字节还是面向字符?
谢谢
请解释什么是字节流和字符流。这些到底是什么意思?Microsoft Word 文档是面向字节还是面向字符?
谢谢
流是按顺序访问文件的一种方式。字节流逐个字节地访问文件。字节流适用于任何类型的文件,但不太适合文本文件。例如,如果文件使用 Unicode 编码,并且一个字符用两个字节表示,则字节流将分别处理这些字符,您需要自己进行转换。
字符流将逐个字符读取文件。需要为字符流提供文件的编码才能正常工作。
尽管 Microsoft Word 文档包含文本,但无法使用字符流(它不是文本文件)访问它。您需要使用字节流来访问它。
字节流:
来自 oracle 文档页面关于字节流:
程序使用字节流来执行 8 位字节的输入和输出。所有字节流类都从 和 降级。
InputStream
OutputStream
何时使用:
字节流应仅用于最原始的 I/O
何时不使用:
不应使用字节流读取字符流
例如,读取文本文件
字符流:
来自 oracle 关于字符流的文档页面:
Java 平台使用 Unicode 约定存储字符值。字符流 I/O 会自动将此内部格式与本地字符集进行转换。
所有字符流类都是 和 的后代。Reader
Writer
字符流通常是字节流的“包装器”。字符流使用字节流来执行物理 I/O,而字符流处理字符和字节之间的转换。
有两个通用的字节到字符“桥接”流:和 。InputStreamReader
OutputStreamWriter
何时使用:
从字符或从字符读取字符流Socket
File
综上所述:
字节流一次读取和写入一个字节。在处理更复杂的数据时,我们必须避免使用字节流。
应使用字符流和其他可用流来处理复杂数据。