首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >缓冲区大小对此文件读取操作没有影响的原因

缓冲区大小对此文件读取操作没有影响的原因
EN

Stack Overflow用户
提问于 2015-07-05 09:33:39
回答 1查看 240关注 0票数 1

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

代码语言:javascript
复制
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的缓冲区大小设置为512,8192,65536。每次完成执行需要87秒。因此,我尝试使用FileInputStream,但仍然需要87秒才能完成执行。batman.mp4的大小为24.7mb。

那我错过了什么?

  • 为什么缓冲区大小的变化对执行时间没有影响?
  • 为什么BufferedInputStream和FileInputStream的执行时间是一样的?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-05 09:39:13

慢下来的是打印-- System.out.println(a); --你总是在屏幕上打印2470万字符。尝试将该文件复制到另一个位置--以不同的缓冲区大小读取该文件,并将其再次写入一个新文件。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31228966

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档