本帖最后由 徐卓 于 2013-7-27 10:44 编辑
- //复制一文件,比较两个复制快慢
- import java.io.*;
- class CopyPic
- {
- public static void main(String[] args)
- {
- FileOutputStream fos = null;
- FileInputStream fis = null;
- try
- {
- long start = System.currentTimeMillis();
- //方法一
- /*fis = new FileInputStream("d:\\1.rar");
- fos = new FileOutputStream("d:\\2.rar");
- byte [] buf = new byte[1024];
- int len = 0;
- while ((len = fis.read(buf))!=-1)
- {
- fos.write(buf,0,len);
- }
- */
- //方法二
- fis = new FileInputStream("d:\\1.rar");
- fos = new FileOutputStream("d:\\2.rar");
- int num = fis.available();
- byte [] buf = new byte[num];
- fis.read(buf);
- fos.write(buf,0,num);
-
- long end = System.currentTimeMillis();
- System.out.println("复制时间:"+(end-start));
- }
- catch (IOException e)
- {
- throw new RuntimeException("复制文件失败");
- }
- finally
- {
- try
- {
- if(fos!=null)
- fos.close();
- }
- catch (IOException e)
- {
- throw new RuntimeException("读取文件关闭失败");
- }
- try
- {
- if(fis!=null)
- fis.close();
- }
- catch (IOException e)
- {
- throw new RuntimeException("复制文件关闭失败");
- }
- }
- }
- }
复制代码 两个方法不一样,但都是使用数组,只是数组大小不一样,能解释下具体原因吗
而且把方法一种数组调大成1024*1024结果就是第三副图那样,变快了,如果在大点变成1024*1024*30,结果复制的时间又会变长如果是通过缓冲区复制,花费的时间更长
why
..................
|
组图打开中,请稍候......
|