Java 为什么缓冲区大小对文件读取操作没有影响

Java 为什么缓冲区大小对文件读取操作没有影响,java,io,buffer,Java,Io,Buffer,我正在学习Java I/O。因此,使用缓冲流可以减少读取或写入所需的时间,因为如果使用普通的FileInputStream,每次调用读取时都会获取一个字节,但如果使用缓冲区,则会获取指定大小的数据并将其存储在内存中。所以我试着在实践中看到这一点 package javaIO; import java.io.BufferedInputStream; import java.io.FileInputStream; import java.io.InputStream; public class

我正在学习Java I/O。因此,使用缓冲流可以减少读取或写入所需的时间,因为如果使用普通的FileInputStream,每次调用读取时都会获取一个字节,但如果使用缓冲区,则会获取指定大小的数据并将其存储在内存中。所以我试着在实践中看到这一点

package javaIO;

import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.InputStream;

public class BufferTest {

    public static void main(String[] args) throws Exception{

        int starttime=(int) (System.currentTimeMillis()/1000);

        BufferedInputStream is=new BufferedInputStream(new FileInputStream("/home/anil/Downloads/Vidoes/batman.mp4"),65536);
//      InputStream is=new FileInputStream("/home/anil/Downloads/Vidoes/batman.mp4");
        int a=0;
        while((a=is.read())!=-1){

            System.out.println(a);
        }

        is.close();

        int endTime=(int) (System.currentTimeMillis()/1000);

        System.out.println("Took "+(endTime-starttime)+"seconds");
    }

}
我已将BufferedInputStream的缓冲区大小设置为512819265536。每次需要87秒才能完成执行。因此,我尝试使用FileInputStream,但仍然需要87秒才能完成执行。蝙蝠侠.mp4的大小是24.7mb

那么我错过了什么

  • 为什么缓冲区大小的更改对执行时间没有影响
  • 为什么BufferedInputStream和FileInputStream的执行时间相同

让你慢下来的是打印-
系统.out.println(a)-您总是在屏幕上打印2470万字符。尝试将文件复制到其他位置-使用不同的缓冲区大小读取文件,然后再次写入新文件。

此外,基准测试无效,因为它不允许缓存启动的效果。我删除了print语句。对于FileInputStream,需要9秒;对于BufferedInputStream,需要0秒。@Srimanthduggini-删除
startTime
endTime
的1000除法,以获得以毫秒为单位的测量值,以获得更准确的计时。您也可以使用
long
代替
int