Java中利用输入流,输出流,递归实现复制多级目录中的纯文本文件到目标目录下(欢迎大神批评指正)

代码如下:

import java.io.*;

public class Test07 {
    public static void main(String[] args) {
        File file1 = new File("d:\\aa");//源文件(绝对路径)
        File destFile = new File("aa");//目标文件(相对路径)
        copyFiles(file1,destFile);//调用方法
    }
    //定义方法复制源文件中的所有内容到目标文件中,参数为:源文件,目标文件
    public static void copyFiles(File file1, File file2) {
        if (file1.exists()) {//如果文件存在
            if (file2.isFile()) {
                System.out.println("目标文件必须是目录");
            }else {
                file2.mkdirs();//创建目标文件目录
                File[] fileList = file1.listFiles();//源文件集合
                String[] fileNames = file1.list();//源文件名字集合
                //遍历集合
                for (int i = 0; i < fileList.length; i++) {
                    if (fileList[i].isDirectory()) {//如果是目录
                        File[] files2 = fileList[i].listFiles();
                        File fileDest = new File(file2, fileNames[i]);//创建目标目录
                        fileDest.mkdirs();//创建目录
                        copyFiles(fileList[i],fileDest);//递归
                    }else {//如果是文件,那么就创建输入流和输出流复制文件中的全部内容
                        File destFile = new File(file2, fileNames[i]);//创建同名的文件
                        try {
                            destFile.createNewFile();
                            try (Reader in = new FileReader(fileList[i]);
                                 Writer out = new FileWriter(destFile,true)//追加写入
                            ) {
                                //一次复制一个字符数组
                                char[] charArr = new char[1024 * 1024];
                                int len =0;
                                while ((len = in.read(charArr)) != -1) {
                                    out.write(charArr,0,len);//将所有读取的字符输出
                                }

                            } catch (FileNotFoundException e) {
                                e.printStackTrace();
                            } catch (IOException e) {
                                e.printStackTrace();
                            }
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                    }

                }
            }
        } else {//文件不存在
            System.out.println("源文件不存在!!!");
        }
        System.out.println("复制完成!!!");
    }
}

猜你喜欢

转载自blog.csdn.net/xilin6664/article/details/89042725
今日推荐