美文网首页工作小记
IO流小练习-JAVA 复制文件,复制文件夹

IO流小练习-JAVA 复制文件,复制文件夹

作者: 叫子非鱼啊 | 来源:发表于2020-05-29 20:30 被阅读0次

    练习要求:

    • 实现复制源文件srcFile到目标文件destFile。
    • 复制文件夹,使用递归将文件夹中的文件复制到目标文件夹下。

    实现效果

    查看文件数量是否相同

    思路

    • 编写复制文件的方法copyFile
      -编写复制文件夹的方法,srcFile.listFiles()获取文件夹下的所有字文件数组
      -循环判断是否为文件:是,调用copyFile 否 调用copyFolder实现递归遍历文件夹下的所有文件
    package iotest;
    
    import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileReader;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.io.PrintWriter;
    
    public class TestCopy {
        public static void main(String[] args) {
            String srcPath = "D:\\Program Files\\7-Zip";
            String destPath = "D:\\temp\\t\\";
    //      copyFile(srcPath,destPath);
            copyFolder(srcPath,destPath);
        }
        
        
        private static void copyFolder(String srcPath, String destPath) {
            File srcFile = new File(srcPath);
            File[] files = srcFile.listFiles();
            for (File file : files) {
                if (file.isFile()) {
                    File destFile = new File(destPath+file.getPath().split(":")[1]);
                    copyFile(file.getAbsolutePath(), destFile.getParent()+File.separator);
                }else {
                    copyFolder(file.getAbsolutePath(), destPath);
                }
            }
        }
    
        /**
         * 复制文件
         * @param srcPath
         * @param destPath
         */
        private static void copyFile(String srcPath,String destPath) {
            File srcFile = new File(srcPath);
            File destFile = new File(destPath+srcFile.getName());
            
            // 文件夹不存在时创建文件夹
            if (!destFile.getParentFile().exists()) {
                boolean result = destFile.getParentFile().mkdirs();
                if (result) {
                    System.out.println(destFile.getParentFile()+"创建成功");
                }else {
                    System.out.println(destFile.getParentFile()+"创建失败");
                }
            }
            try(
                BufferedReader br = new BufferedReader(new FileReader(srcFile));
                PrintWriter pw = new PrintWriter(new FileWriter(destFile));
            ){
                String line;
                while ((line = br.readLine()) != null) {
                    pw.println(line);
                }
                System.out.println(destFile.getAbsolutePath()+"  复制成功");
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
    

    ————————END————————

    想看电影关注我的公众号:电影资源集(支持输入电影名称自动回复了)

    喜欢我的文章,就点击关注我吧

    相关文章

      网友评论

        本文标题:IO流小练习-JAVA 复制文件,复制文件夹

        本文链接:https://www.haomeiwen.com/subject/csxfzhtx.html