日期:2014-05-20  浏览次数:20690 次

java海量处理图片
现在某个文件夹下有上亿个小图片(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(); 

           } 

       }
}