运行实在不知道哪里错了,two.txt的用时始终为0
import java.io.BufferedOutputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class lianxi1 {
public static void main(String[] args){
try {
byte[] b = new byte[150000];
FileOutputStream one = new FileOutputStream("one.txt");
System.out.println("one.txt不使用缓冲流来写");
long oneStartTime = System.currentTimeMillis();
for(int i = 0;i < b.length;i++){
one.write(b[i]);
}
long oneEndTime = System.currentTimeMillis();
System.out.println("用时为:" + (oneEndTime - oneStartTime));
System.out.println("two.txt使用缓冲流来写");
one.close();
FileOutputStream two = new FileOutputStream("two.txt");
BufferedOutputStream bos = new BufferedOutputStream(two);
long twoStartTime = System.currentTimeMillis();
for(int i = 0;i < b.length;i++){
bos.write(b[i]);
}
bos.flush();
long twoEndTime = System.currentTimeMillis();
System.out.println("用时为:" + (twoEndTime - twoStartTime));
two.close();
bos.close();
System.out.println("节省时间:" + ((oneEndTime - oneStartTime)-(twoEndTime - twoStartTime)));
} catch (FileNotFoundException e) {
e.printStackTrace();
}catch (IOException e){
e.printStackTrace();
}
}
}
正在回答
同学你好,代码没有错哦~
我这里运行同学的代码使用缓冲流写入时,时间不为0呢~
同学的用时为0,可能是因为同学电脑的执行速度太快了,在long类型表示的时间差距下统计不出来时间差呢~
如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~
问题出在这里
for(int i = 0;i < b.length;i++){
one.write(b[i]);
}
你的数组并没有赋值,当循环第一次时 i的值是数组下标为0的数值,当循环第二次时 i的值是数组下标为1的数值. 而这两个下标上边的值均为空,你再通过b[i]赋值 并write时,写进去的内容当然为空了。不信可以自己debug看一看
- 参与学习 人
- 提交作业 3802 份
- 解答问题 11489 个
本阶段带你迈入Java世界,学习Java必备基础知识,基础语法、面向对象思想以及常用工具类的使用。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星