InputStream vs Reader

时间:2015-06-12 07:38:11

标签: java inputstream streamreader java-io

我正在查看输入输出部分,有很多类和接口让我感到困惑 正如文档所述,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 个答案:

答案 0 :(得分:2)

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

您可以使用Stream (InputStream, OutputStream)来操纵二进制数据。例如,您想要读取图像文件,然后可以使用FileInputStream,当您想将其保存到磁盘时,可以使用FileOutputStream