Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/387.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 扫描仪中的缓冲读取器';s构造函数_Java_Bufferedreader - Fatal编程技术网

Java 扫描仪中的缓冲读取器';s构造函数

Java 扫描仪中的缓冲读取器';s构造函数,java,bufferedreader,Java,Bufferedreader,我正在研究BufferedReader、Scanner和InputStreamReader类及其差异,我了解每一类的用途。我需要一个解释来澄清一件事:在扫描器的构造函数中传递BufferedReader的目的是什么?这样做的具体原因是什么? 下面是我指的例子 Scanner s = null; try { s = new Scanner(new BufferedReader(new FileReader("file...."))); //mor

我正在研究BufferedReader、Scanner和InputStreamReader类及其差异,我了解每一类的用途。我需要一个解释来澄清一件事:在扫描器的构造函数中传递BufferedReader的目的是什么?这样做的具体原因是什么? 下面是我指的例子

    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倍左右。