gpt4 book ai didi

java - Java 中的字符 I/O 流与字节 I/O 流

转载 作者:行者123 更新时间:2023-12-01 12:05:43 27 4
gpt4 key购买 nike

抽象类Reader抽象类Writer继承的字符流具体子类是否有自己的I/O实现,而不依赖于具体子类抽象类InputStream抽象类OutputStream,它们是基于字节的I/O?

我知道字符流类将处理字符编码格式作为额外的责任,但是,

除了抽象类InputStream下的字节流类层次结构之外,为什么我们还要在抽象类Reader抽象类Writer下给出单独的层次结构和抽象类OutputStream

最佳答案

当时这是一个巨大的语言设计决策,Java 中存在 Unicode 文本,能够组合所有脚本:

  • 二进制数据:byte[]InputStream/OutputStream
  • 文本:字符串/字符(16 位 UTF-16)、读取器/写入器

从二进制数据到文本及其逆的步骤,总是涉及需要字节编码的转换

Java 还使用包装子类,如 BufferedReader、StringReader、基类 Reader/Writer(在合理的情况下)。 Java 选择了这个,并且:

通过这种方式,您可以拥有带有 Reader 参数的文本处理方法。

与 C 相比,java 因此具有单独的 byte 类型和 2 字节 char 类型,保存 UTF-16。在java中,人们几乎不应该尝试在字符串中保存二进制数据,或者将字节转换为字符。

关于java - Java 中的字符 I/O 流与字节 I/O 流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27632529/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com