Java 扫描仪中的缓冲读取器';s构造函数
我正在研究BufferedReader、Scanner和InputStreamReader类及其差异,我了解每一类的用途。我需要一个解释来澄清一件事:在扫描器的构造函数中传递BufferedReader的目的是什么?这样做的具体原因是什么? 下面是我指的例子Java 扫描仪中的缓冲读取器';s构造函数,java,bufferedreader,Java,Bufferedreader,我正在研究BufferedReader、Scanner和InputStreamReader类及其差异,我了解每一类的用途。我需要一个解释来澄清一件事:在扫描器的构造函数中传递BufferedReader的目的是什么?这样做的具体原因是什么? 下面是我指的例子 Scanner s = null; try { s = new Scanner(new BufferedReader(new FileReader("file...."))); //mor
Scanner s = null;
try {
s = new Scanner(new BufferedReader(new FileReader("file....")));
//more code here.........
BufferedReader将创建一个缓冲区。这将加快文件的读取速度。为什么?因为缓冲区会被文件的内容填满。因此,您将文件的较大部分放在RAM中(如果您处理的是小文件,则缓冲区可以包含整个文件)。现在,如果扫描器想要读取两个字节,它可以从缓冲区读取两个字节,而无需向硬盘驱动器请求两个字节
一般来说,读取10乘以4096字节要比读取4096乘以10字节快得多。加上一点,说明这是加载到RAM中的。我想这意味着如果文件已经在RAM中,BufferedReader没有任何好处。也就是说,一个文件由用户上传到一个网页,您希望在将其保存到磁盘之前解析该文件。这是正确的吗?我只是想说它实际上并没有更快,通过比较Scanner、Scanner和BufferedReader以及Just BufferedReader可以很容易地验证这一点。带扫描仪的2台同样快,带BufferedReader的1台快4倍左右。