(JAVA)用递归复制多级文件夹

1.要求

将目录“F:\MyDay”文件夹复制到“E:\say”中,其中“F:\MyDay”内部还有文件夹和文件。

2.程序实现

import java.io.*;

public class CopyDemo2 {
    
    
    public static void main(String[] args) throws IOException{
    
    
        //创建数据源文件对象
        File srcFile = new File("F:\MyDay");
        //创建目的地对象
        File destFile = new File("E:\say");

        //写方法实现
        CopyFolder(srcFile,destFile);

    }

    private static void CopyFolder(File srcFile, File destFile) throws IOException {
    
    
        //判断源对象是否是目录,如果是还要判断目的路径下是否存在改路径
        if (srcFile.isDirectory()){
    
    
            //创建新的对象
            File newFolder = new File(destFile, srcFile.getName());
            if (!newFolder.exists()){
    
    
                newFolder.mkdir();
            }
            File[] fileArr = srcFile.listFiles();
            for (File file:fileArr){
    
    
                CopyFolder(file,newFolder);
            }

        }else {
    
    //如果是文件,则复制文件
            File file = new File(destFile, srcFile.getName());
            copyFile(srcFile,file);
        }

    }

//字节缓冲流复制文件
    private static void copyFile (File srcFile, File destFile) throws IOException {
    
    
        BufferedInputStream bif = new BufferedInputStream(new FileInputStream(srcFile));
        BufferedOutputStream bof = new BufferedOutputStream(new FileOutputStream(destFile));

        byte[]bys = new byte[1024];
        int len;
        while ((len=bif.read(bys))!=-1){
    
    
            bof.write(bys,0,len);
        }
    }
}

猜你喜欢

转载自blog.csdn.net/weixin_45727931/article/details/108463870
今日推荐