当前位置: 代码迷 >> J2SE >> java海量处理图片解决办法
  详细解决方案

java海量处理图片解决办法

热度:32   发布时间:2016-04-24 01:17:45.0
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();            }        }}
  相关解决方案