【问题标题】:What is the difference between a stream and a reader in Java?Java中的流和阅读器有什么区别?
【发布时间】:2011-01-26 13:13:15
【问题描述】:

今天我收到了这个问题,我认为我的回答很糟糕。我说流是一种流动的数据,而阅读器是一种我们从中读取静态数据的技术。我知道这是一个糟糕的答案,所以请通过 Java 中的示例向我提供这两者之间的清晰区别和定义。

谢谢。

【问题讨论】:

    标签: java stream


    【解决方案1】:

    Stream 用于读取字节,Reader 用于读取字符。一个字符可能占用一个字节或更多字节,具体取决于字符集。

    【讨论】:

    • 从流中读取时,字节和字符之间的映射由编码给出。对于 UTF-8,一个字符可以介于 1 到 6 个字节之间。
    【解决方案2】:

    InputStream 是面向字节的。 Reader 是面向字符的。

    javadocs 是您的朋友,解释了不同之处。 Reader, InputStream

    【讨论】:

    • RTFM == 阅读该死的手册
    【解决方案3】:

    正如其他人所说,每个用例都略有不同(尽管它们通常可以互换使用)

    由于阅读器是用来阅读字符的,因此当您处理具有文本性质的输入(或表示为字符的数据)时,它们会更好。我说得更好,因为阅读器(在典型用法的上下文中)本质上是流,具有易于阅读字符输入的方法。

    【讨论】:

    【解决方案4】:

    流类是面向字节的类,这意味着所有InputStream 类(缓冲和非缓冲)从流中逐字节读取数据,所有OutputStream(缓冲和非缓冲)类逐字节写入数据到溪流。当您有小数据或处理二进制文件(如图像)时,流类很有用。

    另一方面,Reader/Writer 是基于字符的类。这些类一次从流中读取或写入一个字符。这些类扩展java.io.Reader(所有字符输入类)或java.io.Writer(所有字符输出类)。如果您正在处理文本文件或其他文本流,这些类很有用。这些类也是BufferedNon-Buffered

    【讨论】:

      猜你喜欢
      • 2017-10-22
      • 1970-01-01
      • 2014-04-11
      • 2015-05-02
      • 2017-01-18
      • 2015-11-18
      • 2010-11-12
      • 2011-07-30
      相关资源
      最近更新 更多