【问题标题】:Why to avoid using ByteStream much in Java为什么要避免在 Java 中大量使用 ByteStream
【发布时间】:2012-04-29 04:34:51
【问题描述】:

我们不应该像 Sun Doc 所说的那样使用字节流 -

实际上它代表了一种你应该避免的低级 I/O。

什么是真正的低级 I/O,什么是使用字节流的确切问题。

【问题讨论】:

  • “低级 I/O”意味着使用起来更加繁琐和复杂——而且更容易搞砸。

标签: java io stream


【解决方案1】:

所以Java docs 说:

CopyBytes 看起来像一个普通的程序,但它实际上代表了一个 您应该避免的那种低级 I/O。由于 xanadu.txt 包含 字符数据,最好的方法是使用字符流,如 下一节讨论。还有更多信息流 复杂的数据类型。字节流应该只用于最 原始 I/O。

字节流使您可以按原样访问文件。只是字节。没有任何形式的解释。这意味着不进行字符集转换,不处理二进制或 ascii 表示的整数或浮点数,不处理字节顺序,或任何其他。更高级别的流提供了其中的一些。

当然,复制文件的程序实际上是需要原始字节流的一个很好的例子,因为它不需要或不想对数据进行任何类型的解释;它只是想逐字复制。

所以真正的意思是,如果您认为需要字节流,请使用它们,但请确保您知道自己在做什么 :)

【讨论】:

    【解决方案2】:

    建议是在阅读本教程中讨论的文本文件的上下文中。为此,最好使用字符流来正确处理字符集转换:

    Java 平台使用 Unicode 约定存储字符值。 字符流 I/O 自动将此内部格式转换为 并来自本地字符集。

    使用字符流代替字节流的程序 自动适应本地字符集并准备好 国际化——所有这些都不需要程序员付出额外的努力。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-25
      • 1970-01-01
      • 1970-01-01
      • 2013-08-19
      相关资源
      最近更新 更多