// 第一种:通过字节流实现快速拷贝文件 try { long before=System.currentTimeMillis(); FileInputStream fis=new FileInputStream("web.rar"); BufferedInputStream bis=new BufferedInputStream(fis,1024*1000);//缓冲每次1MB FileOutputStream fos=new FileOutputStream("web(副本).rar"); BufferedOutputStream bos=new BufferedOutputStream(fos, 1024*1000); byte input[]=new byte[1024*100];//每次读取100KB int count=0; //磁盘读取次数 while (fis.read(input)!=-1) { fos.write(input); count++; } bis.close(); bos.close(); fis.close(); fos.close(); System.out.println("耗时:"+(System.currentTimeMillis()-before)+" ms"); System.out.println("读取次数:"+count); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }
我测试了一个70MB的rar文件的读取,仅仅72毫秒左右即可(我的是个金士顿渣渣的固态盘)
第二种:使用Apache实现快速拷贝
File file=new File("web.rar"); File file2=new File("web(副本).rar"); try { long before=System.currentTimeMillis(); FileUtils.copyFile(file, file2); System.out.println("耗时:"+(System.currentTimeMillis()-before)); } catch (IOException e) { e.printStackTrace(); }
耗时长了一点点,但是操作实在是太方便了,瞬间不想用java原生的IO流了。就是要引用Apache库;可去这里下载:http://download.csdn.net/detail/fm158512775/9224057