我了解到InputStream用于基于字节的读取,每次读取1个字节。而InputStreamReader用于基于字符的读取,因此每次读取一个字符,无需将其首先转换为int再进行读取。
以下是使用InputStream进行读取的示例:
InputStream input=new FileInputStream("D:/input.txt");
int c;
while((c=input.read())!=-1)
{
System.out.print((char)c);
}
这里是使用InputStreamReader进行读取的代码示例:
InputStream input=new FileInputStream("D:/input.txt");
reader=new InputStreamReader(input,"UTF-8");
int c;
while((c=reader.read())!=-1)
{
System.out.print((char)c);
}
什么是
InputStream
和 InputStreamReader
之间的区别?在这两种情况下,我都必须使用一个 int
来读取数据,在最后如果我想打印该数据,则必须使用“(char)c”进行转换。那么使用 InputStreamReader
的优点是什么?
InputStream
本身无法处理大于127的输入值。尝试向测试输入添加一些中文字符,它们将作为两个字节打印出来,而使用InputStream
版本则是如此。 - markspace