This question already has an answer here:
java reader vs. stream
                                
                                    (1个答案)
                                
                        
                                4年前关闭。
            
                    
我要遍历输入输出部分,并且有太多的类和接口让我有些困惑。
正如文档所述,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();
}


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

最佳答案

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

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

09-30 14:36
查看更多