文件的复制(包括文件夹和子文件)

package 综合练习;

import java.io.*;

// 文件复制
public class CopyFile {
    public static void main(String[] args) throws IOException{
        String scr = "C:\\Users\\ly\\Desktop\\代码\\java\\src";
        String dest = "D:Test01";
        //copyFile(scr, dest);
        copyFolder(scr,dest);
    }
    // 复制文件
    public static void copyFile(String srcFile, String destFile) throws IOException{
        File src = new File(srcFile);
        File dest = new File(destFile);
        dest.getParentFile().mkdirs();
        dest.createNewFile();
        try(FileReader fr = new FileReader(src);
            BufferedReader br = new BufferedReader(fr);
            FileWriter fw = new FileWriter(dest);
            BufferedWriter bw = new BufferedWriter(fw)){
            String line = null;
            while((line = br.readLine()) != null){
                bw.write(line);
                bw.newLine();
                bw.flush();
            }
        }catch (IOException e){
            e.printStackTrace();
        }
    }
    public static void copyFolder(String srcFile, String destFile)throws IOException{
        File src = new File(srcFile);
        File dest = new File(destFile);  // C:\Users\ly\Desktop\代码\java\src\Test01.java\数据流---错误
        dest.getParentFile().mkdirs(); // 创建文件夹
        File[] files = src.listFiles();
        String dirName = "";  // dirName 存储文件夹名称
        String tmpdestFile = dest.getPath(); // 临时文件地址
        String tmpsrcFile = src.getPath();
        for (File f:files) {
            if(f.isDirectory()){
                dirName = "\\" + f.getName();  // 文件夹名字
                tmpsrcFile += dirName; // 需要添加的文件夹加 原始路径
                tmpdestFile += dirName;
                copyFolder(tmpsrcFile, tmpdestFile); // 递归------一直递归到是文件为止

                tmpdestFile = destFile; // 重新初始文件地址,如果不初始的话会写入错误地址
                tmpsrcFile = srcFile;
            }
            if(f.isFile()){
                // D:Test01\Test01.java\数据流
                destFile += "\\" + f.getName();
                copyFile(f.getPath(), destFile);
                destFile = tmpdestFile; // 初始文件上一个路径 -- 不初始化会出错比如:  // D:Test01\Test.java\Test.java
            }
        }
    }
}

猜你喜欢

转载自blog.csdn.net/weixin_43346223/article/details/87971155