为什么用缓冲流反而慢了?
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();
}
}
}
正在回答
把flush()方法去掉就会省时很多,因为写一个数字就清空一次缓冲区,这样很耗时。缓冲区的好处是满了后自动清空,最后一次有可能不满才会调用flush()强制清空缓冲区。而调用close()方法也可以清空缓冲区,所以flush()方法不用也行。祝学习愉快!
- 参与学习 人
- 提交作业 7317 份
- 解答问题 14452 个
想要入门学编程?多年一直活跃在编程语言排行版前列的Java是一个很好的选择。本路径将从Java基础语法、面向对象、常用工具类三部分,为你开启软件开发的大门!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星