我们不应该像 Sun Doc 所说的那样使用字节流 -
实际上它代表了一种你应该避免的低级 I/O。
什么是真正的低级 I/O,什么是使用字节流的确切问题。
所以Java文档说:
CopyBytes 看起来像一个普通程序,但它实际上代表了一种您应该避免的低级 I/O。由于 xanadu.txt 包含字符数据,因此最好的方法是使用字符流,如下一节所述。还有更复杂的数据类型的流。字节流应该只用于最原始的 I/O。
字节流使您可以按原样访问文件。只是字节。没有任何形式的解释。这意味着不进行字符集转换,不处理二进制或 ascii 表示的整数或浮点数,不处理字节顺序,或任何其他。更高级别的流提供了其中的一些。
当然,复制文件的程序实际上是需要原始字节流的一个很好的例子,因为它不需要或不想对数据进行任何类型的解释;它只是想逐字复制它。
所以真正的意思是,如果您认为需要字节流,请使用它们,但请确保您知道自己在做什么 :)
该建议是在阅读本教程中讨论的文本文件的背景下进行的。为此,最好使用字符流来正确处理字符集转换:
Java 平台使用 Unicode 约定存储字符值。字符流 I/O 自动将此内部格式与本地字符集进行转换。
使用字符流代替字节流的程序会自动适应本地字符集并为国际化做好准备——这一切都不需要程序员额外的努力。