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

多级目录,文件Copy问题
前提:
  现在我有一个文件夹(命名为[一级目录]),下面有若干个子文件夹(命名为[二级目录1···N]),在每一个文件夹中都存在同名字文件夹(命名为[同名文件夹])

问题:
  我想把所有[同名文件夹]下的所有文件,Copy到某个目录(比如C:\My Document)下,怎样做。

  1、Java实现代码,有兴趣的可以考虑下

  2、Dos命令能不能实现,如何写命令。

  3、Bat批处理是否能实现,如何写代码。

注意:
  中间存在二级目录,并且名称不相同,Dos下能否使用通配符之类的实现。

------解决方案--------------------
Java code
    public static  void copy(File dir_src,String  dir_des){
        
        for(int i=0;i<dir_src.listFiles().length;i++){
            File f=dir_src.listFiles()[i];
            if(f.isDirectory()){
                copy(f,dir_des+"/"+f.getName());
            }else{
                try {
                    File dir=new File(dir_des);
                    if(!dir.exists()){
                        dir.mkdirs(); 
                    }
                    
                    FileChannel in=new FileInputStream(f).getChannel();
                    File f_des=new File(dir_des+"/"+f.getName());
                    FileChannel out=new FileOutputStream(f_des).getChannel();
                    System.out.print("copy "+f.getAbsolutePath()+" to " +f_des.getAbsolutePath()+"...");
                    in.transferTo(0, in.size(), out);
                    in.close();
                    out.close();
                    System.out.println("success");
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        }
    }

------解决方案--------------------
LS的估计就可了,文件夹名字的规则你可以自己来定。
通过 if(f.isDirectory()){
copy(f,dir_des+"/"+f.getName());
}
这句递归,会把所有子目录文件都拷贝到你的目标文件夹。