【问题标题】:InputStream vs Reader [duplicate]InputStream vs Reader [重复]
【发布时间】:2015-08-28 03:37:25
【问题描述】:

我正在检查输入输出部分,有太多的类和接口,我有点困惑。
正如文档所说,InputStream 是基于字节的流,而 Reader 是基于字符的流。但正如我正确理解的那样,它们之间的唯一区别是Reader 每次读取两个字节,而不是像InputStream 那样一次读取一个字节。
因此我不明白有什么区别:
使用 InputStream

 byte[] bytes = new byte[2];
    InputStream in = new FileInputStream("input.txt");
    int bytesRead = in.read(bytes);
    while(bytesRead != -1) {
      doSomethingWithData(data);
      bytesRead = inputstream.read(data);
    }

使用 Reader

Reader reader = new InputStreamReader(new FileInputStream("input.txt"));
int data = reader.read();
while (data != -1) {
   doSomethingWithData(data);
   data = reader.read();
}

我真的对这些方面感到困惑。请详细说明。谢谢。

【问题讨论】:

  • 根据字符集,一个字符可能是 1 或 2(甚至更多)字节。

标签: java inputstream streamreader java-io


【解决方案1】:

您可以使用Reader 来读取文本数据。它支持一些字符编码,如 ISO、UTF-8。如果您想读取具有某种编码的文本文件,则可以使用Readers,例如 - BufferedReaderStringReader 等。

您可以使用Stream (InputStream, OutputStream) 来操作二进制数据。例如你想读取一个图像文件,那么你可以使用FileInputStream,当你想将它保存到磁盘时,你可以使用FileOutputStream

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-05-21
    • 2015-05-30
    • 2012-06-15
    • 1970-01-01
    • 2020-08-13
    • 2021-04-08
    • 1970-01-01
    • 2010-11-23
    相关资源
    最近更新 更多