为什么用缓冲流反而慢了?

为什么用缓冲流反而慢了?

package com.luyue.file;

import java.io.BufferedOutputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public class BufferedDemo2 {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        try {
            FileOutputStream fos=new FileOutputStream("one.txt",true);
            long stime=System.currentTimeMillis();
            for(int i=0;i<=1000000;i++) {
                fos.write(i);
            }
            long etime=System.currentTimeMillis();
            System.out.println("one不用缓冲流写用时:"+(etime-stime));
            fos.close();
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }catch (IOException e) {
            e.printStackTrace();
        }
        try {
            FileOutputStream fos2=new FileOutputStream("two.txt",true);
            BufferedOutputStream bos=new BufferedOutputStream(fos2);
            long stime2=System.currentTimeMillis();
            for(int i=0;i<=1000000;i++) {
                bos.write(i);
                bos.flush();
            }
            
            long etime2=System.currentTimeMillis();
            System.out.println("two用缓冲流写用时:"+(etime2-stime2));
            fos2.close();
            bos.close();
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }catch (IOException e) {
            e.printStackTrace();
        }
    }

}

http://img1.sycdn.imooc.com/climg//59d1d8c10001386319201048.jpg

正在回答

登陆购买课程后可参与讨论,去登陆

1回答

把flush()方法去掉就会省时很多,因为写一个数字就清空一次缓冲区,这样很耗时。缓冲区的好处是满了后自动清空,最后一次有可能不满才会调用flush()强制清空缓冲区。而调用close()方法也可以清空缓冲区,所以flush()方法不用也行。祝学习愉快!

  • 闪光棒 提问者 #1
    其实我已经试过了,哈哈,谢谢老师。
    2017-10-02 22:42:51
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师