欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

移动文件夹中特定后缀名的文件到一个目录下面

程序员文章站 2022-07-11 09:43:01
...

代码:

public class Test {
    public static void main(String[] args) {
        // 文件后缀名
        String suffix = "htm";
        // 存储被移动文件的目录
        File from = new File("C:\\download\\百度网盘\\fileoperator");
        // 移动到哪个目录
        File to = new File("C:\\download\\百度网盘\\hj");
        // 判断被移动目录是否存在
        if (!(from.exists() && from.isDirectory())) {
            System.out.println("注意:" + from.getAbsolutePath() + "目录必须存在");
        }
        // 如果移动目标目录不存在,那就创建一个
        if (!to.exists()) {
            to.mkdirs();
        }
        // 开始移动
        move(from, to, suffix);
        // 移动完成提示
        System.out.println("移动完成!!!");
    }

    // 文件移动方法
    private static void move(File from, File to, String suffix) {
        // 对目录和文件进行分开处理
        if (from.isDirectory()) {
            // 对目录下面的文件/文件夹进行遍历
            for (File file : from.listFiles()) {
                move(file, to, suffix);
            }
        } else {
            // 如果是文件,那就判断文件后缀名是否符合要求
            if (from.getName().endsWith(suffix)) {
                from.renameTo(new File(to.getAbsolutePath() + "/" + from.getName()));
            }
        }
    }
}

解释:

我写上面的代码不是空穴来风,而是我在项目开发中用到了,其中场景是这样的,我需要将多个文件夹中以htm结尾的网页文件放在一个目录下面,这个目录是给其他程序访问的,但是装载网页图片的文件夹中有的里面还有文件夹,有的里面直接就是网页文件,另外文件夹里面还有以txt结尾的文件,但是我只需要复制以htm结尾的文件就可以,而每个文件夹中有20~30万个网页文件,当我使用Ctrl+C或者Ctrl+X的时候发现复制的速度太小了,应该就是网页文件数量太多,然而机器性能又比较第,所以我只能使用上述代码来解决该问题

相关标签: 努力工作中