现在某个文件夹下有上亿个小图片(1-10k),有什么工具或者用java编写程序 来实现把这个文件夹复制到另一个文件夹中。(速度最好大于500kb/s )
------解决方案--------------------
我测试的F1文件夹3.9M,用时0.18秒,速度LZ自己算下,完全达到你的要求,而且的话支持读取子文件夹,文件类型也不只是图片
- Java code
import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;public class CopyFolder { public static void main(String[] args) { long begin=System.currentTimeMillis(); copyFolder("F:/JAVA/F1","F:/JAVA/F2"); long end=System.currentTimeMillis(); System.out.println((end-begin)*0.001+"秒"); } public static void copyFolder(String oldPath, String newPath) { try { (new File(newPath)).mkdirs(); //如果文件夹不存在 则建立新文件夹 File a=new File(oldPath); String[] file=a.list(); File temp=null; for (int i = 0; i < file.length; i++) { if(oldPath.endsWith(File.separator)){ temp=new File(oldPath+file[i]); } else{ temp=new File(oldPath+File.separator+file[i]); } if(temp.isFile()){ FileInputStream input = new FileInputStream(temp); FileOutputStream output = new FileOutputStream(newPath + "/" + (temp.getName()).toString()); byte[] b = new byte[1024 * 5]; int len; while ( (len = input.read(b)) != -1) { output.write(b, 0, len); } output.flush(); output.close(); input.close(); } if(temp.isDirectory()){//如果是子文件夹 copyFolder(oldPath+"/"+file[i],newPath+"/"+file[i]); } } } catch (Exception e) { System.out.println("复制整个文件夹内容操作出错"); e.printStackTrace(); } }}