我正在研究BufferedReader,Scanner和InputStreamReader类及其差异,我理解每个类的目的。我想要一个解释来澄清一件事:在Scanner的构造函数中传递BufferedReader的目的是什么?这样做的具体原因是什么? 以下是我所指的例子。
Scanner s = null;
try {
s = new Scanner(new BufferedReader(new FileReader("file....")));
//more code here.........
答案 0 :(得分:2)
BufferedReader将创建一个缓冲区。这应该可以更快地从文件中读取。为什么?因为缓冲区充满了文件的内容。所以,你把一大块文件放在RAM中(如果你处理小文件,缓冲区可以包含整个文件)。现在,如果扫描仪想要读取两个字节,它可以从缓冲区读取两个字节,而不必向硬盘驱动器请求两个字节。
一般来说,读取10次4096字节而不是4096次10字节要快得多。