Java文件递归拷贝

import java.io.*;

/**
 * @Author langkye
 */
public class FileCopy{
    public static void main(String[] args) {
        //源目录
        String srcDir = "D:\src";
        //目标目录
        String targetDir = "D:\target";

        File src = new File(srcDir);
        File target = new File(targetDir);

        reCopyFiles(src,target);
    }

    public static void reCopyFiles(File src, File target){
        //如果src是目录
        if (src.isDirectory()){
            //在目标目录下创建src的文件夹
            File t = new File(target.getAbsoluteFile()+File.separator+src.getName());
            t.mkdirs();
            for (File s :src.listFiles()){
                //递归调用
                reCopyFiles(s,t);
            }
        }//如果src是文件
        else if (src.isFile()){
            InputStream in = null;
            OutputStream out = null;
            try {
                //创建输入、输出流拷贝文件
                in = new FileInputStream(src);
                out = new FileOutputStream(target.getAbsoluteFile()+File.separator+src.getName());
                int len = -1;
                //每次写8字节
                byte[] bytes = new byte[1024*8];
                while ((len=in.read(bytes))!=-1){
                    out.write(bytes,0,len);
                }
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }finally {
                if (in != null){
                    try {
                        in.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
                if (out!=null){
                    try {
                        out.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }
        }
}
原文地址:https://www.cnblogs.com/langkyeSir/p/13963510.html