使用bos写的时间为0,请老师指出问题

使用bos写的时间为0,请老师指出问题

package ioStream;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Random;

public class BufferedExercise {

    public static void main(String[] args) {
        long t1 = 0,t2=0;
        Random r=new Random();
        try {
            
            FileOutputStream fos1= new FileOutputStream("one.txt");
            FileInputStream fis1=new FileInputStream("one.txt");
            
            //基于FileOutputStream的one.txt
            long startTime1=System.currentTimeMillis();
            int n1=0;
            while(n1<100000) {
                fos1.write((char)(65+r.nextInt(26)));
                n1++;
            }
            long endTime1=System.currentTimeMillis();
            t1=endTime1-startTime1;
            fos1.close();
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        
        //基于BufferedOutputStream的two.txt
   try {
            
       FileOutputStream fos2 = new FileOutputStream("two.txt");
        BufferedOutputStream bos=new BufferedOutputStream(fos2);
        FileInputStream fis2=new FileInputStream("two.txt");
        BufferedInputStream bis=new BufferedInputStream(fis2);
            
            
            long startTime2=System.currentTimeMillis();
            int n2=0;
            while(n2<100000) {
                bos.write((char)(65+r.nextInt(26)));
                n2++;
            }
            bos.flush();
            long endTime2=System.currentTimeMillis();
            t2=endTime2-startTime2;
            bos.close();
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        
        System.out.println("one.txt不使用缓冲流来写");
        System.out.println("用时为:"+t1+"ms");
        System.out.println("two.txt使用缓冲流来写");
        System.out.println("用时为:"+t2+"ms");
        System.out.println("节省时间:"+(t1-t2)+"ms");
    }

}


正在回答

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

2回答

1、在老师的电脑上没有出现过0ms的情况,(把循环改小10倍后出现过0ms)但两个确实是不一定的。猜测有可能是同学的电脑性能很好,可能处理的比较快。建议同学把两个循环都乘以10倍,也就是都加个0.看看t2是否还是0ms呢?

2、在回复中无法截图,可以在回答中贴一下你的截图

http://img1.sycdn.imooc.com//climg/5c773bb60001ac9908450109.jpg

追问贴代码时,也要贴在我要回答中呦,在回复中贴代码会失去代码格式。

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

  • qq_cookies_oqrHNO 提问者 #1
    循环加大10倍后就没有这种情况了,谢谢老师
    2019-02-28 10:43:12
好帮手慕阿莹 2019-02-27 17:39:25

测试同学的代码,没有出现同学说的0呀:

http://img1.sycdn.imooc.com//climg/5c765aa70001e0fe04040175.jpg

建议同学再试试呢?如果还是有问题,可以把截图贴一下。

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

  • 提问者 qq_cookies_oqrHNO #1
    但是我这里运行好多次的结果都是这样,one.txt用时不一定,two.txt用时恒为0
    2019-02-28 09:18:03
  • 提问者 qq_cookies_oqrHNO #2
    老师,想贴截图,但是没找到哪可以贴,截图里运行结果就是我说的那样
    2019-02-28 09:19:01
  • 提问者 qq_cookies_oqrHNO #3
    老师,我发现是这样的,大多数情况第二个的时间都为0,少数情况里第二个时间不为0,这个结果是合理的吗
    2019-02-28 09:20:38
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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