A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© wangjinyu501 中级黑马   /  2013-3-23 11:36  /  1541 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

我用下面这个代码复制文件,但是为什么每次复制相同文件所使用的时间都不一样呢?
  1. /**
  2. *
  3. */
  4. package com.debug.java;

  5. import java.io.BufferedInputStream;
  6. import java.io.BufferedOutputStream;
  7. import java.io.FileInputStream;
  8. import java.io.FileNotFoundException;
  9. import java.io.FileOutputStream;
  10. import java.io.IOException;

  11. /**
  12. * @author wangpeng
  13. *
  14. */
  15. public class CopyMp3 {

  16.         /**
  17.          * @param args
  18.          */
  19.         public static void main(String[] args) {
  20.                 long begin=System.currentTimeMillis();
  21.                 copyMp3File();
  22.                 long end=System.currentTimeMillis();
  23.                 long c=end-begin;
  24.                 System.out.println("复制耗时"+c+"毫秒");
  25.         }

  26.         public static void copyMp3File(){
  27.                 FileInputStream fis=null;
  28.                 FileOutputStream fos=null;
  29.                
  30.                 BufferedInputStream bis=null;
  31.                 BufferedOutputStream bos=null;
  32.                
  33.                 try {
  34.                         fis=new FileInputStream("F://test/Up.mp3");
  35.                         bis=new BufferedInputStream(fis);
  36.                        
  37.                         fos=new FileOutputStream("F://test/down.mp3");
  38.                         bos=new BufferedOutputStream(fos);
  39.                        
  40.                         byte[] bt=new byte[1024];
  41.                         int len=0;
  42.                        
  43.                         try {
  44.                                 while((len=bis.read(bt))!=-1){
  45.                                         bos.write(bt, 0, len);
  46.                                 }
  47.                         } catch (IOException e) {
  48.                                 e.printStackTrace();
  49.                         }
  50.                 } catch (FileNotFoundException e) {
  51.                         e.printStackTrace();
  52.                 }finally{
  53.                         try {
  54.                                 fis.close();
  55.                                 fos.close();
  56.                         } catch (IOException e) {
  57.                                 e.printStackTrace();
  58.                         }
  59.                 }
  60.         }
  61. }
复制代码

点评

如果问题未解决,请继续追问回复者,如果问题已经解决,请将分类改为“已解决”,谢谢  发表于 2013-3-24 07:26

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

3 个回复

倒序浏览
跟你你每次做同一件事所用的时间不同,的道理差不多吧
回复 使用道具 举报
本帖最后由 VOIDMAIN 于 2013-3-23 12:26 编辑

这个和机器的性能有关啊,说到底程序执行还是依赖于硬件,而电脑在每时每刻处理任务(有很多后台的处理任务)的情况不一样,分配给你这个程序执行的时间也不可能一样。平时有很多这样的例子啊,比如在硬盘拷贝大数据的时候,你打开文档的速度都会变慢,一样的道理。

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
你看过多线程的那节视频没?如果你看了,相信就会有理解,windows系统是多任务的,电脑看上去同时执行多个任务,其实一个时间片内值处理一个,有时候抢到资源多了,就会多执行一会,抢到资源少了,就少执行一会,所以时间是变化,你电脑同时运行东西多了,就相对来说慢些

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马