Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 输入流与读取器_Java_Inputstream_Streamreader_Java Io - Fatal编程技术网

Java 输入流与读取器

Java 输入流与读取器,java,inputstream,streamreader,java-io,Java,Inputstream,Streamreader,Java Io,我正在浏览输入输出部分,有太多的类和接口,我有点困惑。 正如文档所述,InputStream是基于字节的流,而Reader是基于字符的流。但正如我正确理解的那样,Reader每次读取两个字节,而不是像InputStream那样每次读取一个字节 因此我不明白有什么区别: 使用输入流 byte[] bytes = new byte[2]; InputStream in = new FileInputStream("input.txt"); int bytesRead = in.re

我正在浏览输入输出部分,有太多的类和接口,我有点困惑。
正如文档所述,
InputStream
是基于字节的流,而
Reader
是基于字符的流。但正如我正确理解的那样,
Reader
每次读取两个字节,而不是像
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 = new InputStreamReader(new FileInputStream("input.txt"));
int data = reader.read();
while (data != -1) {
   doSomethingWithData(data);
   data = reader.read();
}

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

您可以使用
阅读器来读取文本数据。它支持一些字符编码,比如-ISO,UTF-8。如果您想读取带有某种编码的文本文件,则可以使用
Reader
s,如-
BufferedReader
StringReader


您可以使用
Stream(InputStream,OutputStream)
来操作二进制数据。例如,如果要读取图像文件,则可以使用
FileInputStream
;如果要将其保存到磁盘,则可以使用
FileOutputStream

根据字符集的不同,字符可以是1或2个(甚至更多)字节。