为什么建议在InputStreamReader周围包装BufferReader?

时间:2014-03-10 14:59:52

标签: java io

BufferReader br = new BufferedReader(new InputStreamReader(System.in));

请解释InputStreamReader(System.in)传递BufferReader()的原因。

3 个答案:

答案 0 :(得分:2)

The docs回答这个问题。

  

通常,由Reader组成的每个读取请求都会导致相应的读取请求由基础字符或字节流组成。因此,建议在BufferedReader操作可能代价高昂的任何Reader周围包裹read(),例如FileReadersInputStreamReaders

     

例如,

BufferedReader in = new BufferedReader(new FileReader("foo.in"));
     

将缓冲指定文件的输入。如果没有缓冲,read()readLine()的每次调用都可能导致从文件中读取字节,转换为字符,然后返回,这可能效率很低。

答案 1 :(得分:1)

数据缓冲区(或仅缓冲区)是物理内存存储区,用于在数据从一个位置移动到另一个位置时临时存储数据。通常,数据是从输入设备(如麦克风,文件,磁盘等)中检索到的数据中存储的,或者是在将数据发送至输出设备(如扬声器)之前存储在缓冲区中的。

将读取器包装在BufferedReader中,可以减少每次直接从外部设备读取数据所需的时间,从而提高了程序效率。相反,BufferedReader可以从外部设备读取数据,并将数据存储在缓冲区中以进行进一步处理。

答案 2 :(得分:0)

java BufferedReader类为您的Reader实例提供缓冲。缓冲可以大大提高I / O的速度。