相关疑难解决方法(0)

为什么使用BufferedInputStream比使用FileInputStream更快地逐字节读取文件?

我试图通过使用FileInputStream将文件读入数组,并且~800KB文件花了大约3秒来读入内存.然后我尝试了相同的代码,除了将FileInputStream包装到BufferedInputStream中,它花了大约76毫秒.为什么使用BufferedInputStream以字节逐字节读取文件,即使我仍在逐字节读取它?这是代码(代码的其余部分完全不相关).请注意,这是"快速"代码.如果你想要"慢"代码,你可以删除BufferedInputStream:

InputStream is = null;

    try {
        is = new BufferedInputStream(new FileInputStream(file));

        int[] fileArr = new int[(int) file.length()];

        for (int i = 0, temp = 0; (temp = is.read()) != -1; i++) {
            fileArr[i] = temp;
        }
Run Code Online (Sandbox Code Playgroud)

BufferedInputStream的速度提高了30多倍.远不止于此.那么,为什么会这样,并且可以使这个代码更有效(不使用任何外部库)?

java file-io inputstream fileinputstream

60
推荐指数
1
解决办法
5万
查看次数

标签 统计

file-io ×1

fileinputstream ×1

inputstream ×1

java ×1