Java_IO流之复制含有子文件夹的

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;


public class CopyFolderDemo {
    public static void main(String[] args) throws IOException {
        //复制单级目录
        //封装源文件夹
        File srcFloder = new File("D:\\dudu");
        //封装目标文件夹
        File aimFloder = new File("E:\\dudu");
        //如果目标文件夹不存在,创建出来
        if (!aimFloder.exists()) {
            aimFloder.mkdirs();
        }
        //复制操作
        copyFolder(srcFloder, aimFloder);
    }

    private static void copyFolder(File srcFloder, File aimFloder) throws IOException {
        //复制操作
        //1.先获取目标文件夹下的所有文件和文件夹
        File[] files = srcFloder.listFiles();
        //2.遍历每个文件进行复制
        for (File f : files) {
            if (f.isFile()) {
                //复制每一个文件
                copyFiles(f, aimFloder);
            } else 

                //封装源文件夹,封装目标文件夹,递归调用
                File yuanFloder = f.getAbsoluteFile();
                File mubiaoFloder = new File(aimFloder, f.getName());
                //若不存在创建目标文件夹
                if (!mubiaoFloder.exists()) {
                    mubiaoFloder.mkdirs();
                }
                //递归调用
                copyFolder(yuanFloder,mubiaoFloder);
            }

        }
    }

    //复制文件
    private static void copyFiles(File f, File aimFloder) throws IOException {
        //封装源文件
        FileInputStream in = new FileInputStream(f);
        //封住目标文件
        FileOutputStream out = new FileOutputStream(new File(aimFloder, f.getName()));
        int len = 0;
        byte[] bytes = new byte[1024 * 8];
        while ((len = in.read(bytes)) != -1) {
            out.write(bytes, 0, len);
            out.flush();
        }
        in.close();
        out.close();
    }
}

你可能感兴趣的:(Java_IO流之复制含有子文件夹的)