递归拷贝文件夹

`

public class Test2 {
public static void main(String[] args) {
   copy(new File("e:/youdao"),new File("e:/test"));
}

private static void copy(File src, File dest) {
    //1、判断源目录是否存在
    if (src!=null&&src.exists()&&src.isDirectory()){
        //2、目标目录创建:e:/test/youdao
        File destOne=new File(dest,src.getName());
        destOne.mkdirs();//创建多级目录

        //提取原目录下的全部的一级文件对象
        File[] files=src.listFiles();
        //先判断是否存在一级文件对象
        if (files!=null&&files.length>0){
            //便利一级文件对象
            for (File file : files) {
                //判断是文件夹还是文件
                if (file.isFile()){
                    copyFile(file,new File(destOne,file.getName()));
                }else {
                    //遍历到文件夹就递归复制
                    copy(file,destOne);
                }
            }
        }
    }
}


public static void copyFile(File srcFile,File destFile){
    try (
            //创建一个字节输入流管道与原文件接通
            InputStream is=new FileInputStream(srcFile);
            //创建一个字节输出流管道与目标文件接通
            OutputStream os=new FileOutputStream(destFile);
            ){

        //字节数组来转移数据
        byte[] bytes=new byte[1024];
        int l;//记录每次读取的字节数
        while ((l=is.read(bytes))!=-1){
            os.write(bytes,0,l);
        }
    } catch (IOException e) {
        e.printStackTrace();
    }
}

}
`

posted @ 2021-08-14 22:00  星星上的张优秀  阅读(51)  评论(0编辑  收藏  举报
Live2D