向向量添加整数

时间:2012-10-15 05:46:02

标签: java inputstreamreader

大家好,在阅读我们使用的输入数据流时

BufferedReader stdin=new BufferedReader(new InputStreamReader(System.in));

如果BufferedReader非常适合阅读流,为什么我们只能使用

BufferedReader stdin=new BufferedReader(System.in);

为什么我们需要InputStreamReader ??

5 个答案:

答案 0 :(得分:2)

BufferedReader似乎是Reader类的包装类。使用System.in构造BufferedReader只是无效的语法。 BufferedReader类的原因来自文档:

  

通常,每个读取请求都会产生相应的读取请求   读取基础字符或字节流的请求。它   因此建议在任何Reader周围包装一个BufferedReader   其read()操作可能代价高昂,例如FileReaders和   InputStreamReaders。例如,

     

BufferedReader in = new BufferedReader(new FileReader(“foo.in”));

     

将缓冲指定文件的输入。没有缓冲,每个   调用read()或readLine()可能会导致读取字节   该文件,转换为字符,然后返回,这可以是   非常低效。

答案 1 :(得分:1)

简单地说,因为没有BufferedReader(InputStream)构造函数。只有两个构造函数可用:

答案 2 :(得分:0)

您可以使用BufferedInputStream(InputStream in)。我想这就是你要找的......

答案 3 :(得分:0)

输入流读取器通过PipeLining连接到Buffered Reader。

JVM将分配一定量的缓冲区空间来一次性存储输入,而不是逐字节或逐字符存储。因此,在用户通过InputStreamReader完全输入输入后,输入将存储在JVM分配的缓冲区中。 使用此Reader,读取速度更快,以便以后处理。

答案 4 :(得分:0)

因为System.in是Streams而BufferedReader是读者,所以你不能将流放入读者,这样你就必须像读书那样为读者转换它。

new BufferedReader(new InputStreamReader(System.in));

读者和作家在编码下操纵字符(UTF-8,ISO8859-2, 等),也称为“文本”。流操纵字节,不一定是字节 构成一个任意对象。 (大多数只是操纵字节数组。)这些 数据也称为“二进制数据”。