五、java IO--通过字节流拷贝文件夹

package cn.edu.hrbeu.io.file;

import java.io.File;

/**
 * 文件夹的拷贝
 * 1、当为文件时-->直接拷贝
 * 2、当为文件夹时-->创建文件夹-->递归查找子孙级
 */
public class CopyDir {

    public static void main(String[] args) {
        String srcPath = ("F:/srcDir");
        String destPath = ("F:/destDir");
        copyDir(srcPath,destPath);
    }
    /**
     * 拷贝文件夹
     * @param srcPath
     * @param destPath
     */
    public static void copyDir(String srcPath,String destPath){
        File src = new File(srcPath);
        File dest = new File(destPath);
        if (src.isDirectory()){    //1、如果是文件夹    
//      Creates a new File instance from a parent pathname string(destPath)
//      and a child pathname string(src.getName()).
            dest = new File(destPath,src.getName());    //在路径destPath中新建一个src.getName()子目录
            dest.mkdirs();    //Creates the directory named by this abstract pathname(dest)        
        }
        copyDirDetail(src,dest);    
    }
    /**
     * 拷贝文件夹的细节实现(单独提出需要递归的部分,方便递归)
     * @param src
     * @param dest
     */
    public static void copyDirDetail(File src,File dest){
        if (src.isFile()) {        //2、如果是文件
            CopyFile.copyFile(src,dest);
        }else if (src.isDirectory()) {    //1、如果是文件夹
            dest.mkdirs();    //建立一个新的子目录
            for(File sub:src.listFiles())
                copyDirDetail(sub,new File(dest,sub.getName()));//3、递归查找子孙级
        }
    }
}

 

posted @ 2018-01-29 17:49  JQS  阅读(230)  评论(0编辑  收藏  举报