为什么我不使用缓冲流反而用时更少?
package com.imooc.file;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class BufferedTime {
public static void main(String[] args) {
try {
FileOutputStream fos2 = new FileOutputStream("two.txt");
BufferedOutputStream bos2 = new BufferedOutputStream(fos2);
FileOutputStream fos1 = new FileOutputStream("one.txt");
//不使用缓冲流来写入100000个a
int n1 = 0;
long startTime1 = System.currentTimeMillis();
while(n1<100000) {
fos1.write('a');
n1++;
}
long endTime1 = System.currentTimeMillis();
long time1 = endTime1-startTime1;
System.out.println("one.txt不使用缓冲流来写\n用时为:"+time1);
//使用缓冲流来写入100000个a
int n2 = 0;
long startTime2 = System.currentTimeMillis();
while(n2<100000) {
bos2.write('a');
n2++;
bos2.flush();
}
long endTime2 = System.currentTimeMillis();
long time2 = endTime2-startTime2;
System.out.println("two.txt使用缓冲流来写\n用时为:"+time2);
System.out.println("节省时间:"+(time1-time2)+"ms");
fos1.close();
bos2.close();
fos2.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
//one.txt不使用缓冲流来写
//用时为:242
//two.txt使用缓冲流来写
//用时为:254
//节省时间:-12ms1
收起
正在回答
1回答
同学你好,首先每写一行数据就调用flush方法,会降低写入效率。其次在close方法中已经隐式调用了flush方法,所以,将while循环中的bos2.flush()去掉。
如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~
1. Java 零基础入门
- 参与学习 人
- 提交作业 3802 份
- 解答问题 11489 个
本阶段带你迈入Java世界,学习Java必备基础知识,基础语法、面向对象思想以及常用工具类的使用。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星