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

代码:

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的时候发现复制的速度太小了,应该就是网页文件数量太多,然而机器性能又比较第,所以我只能使用上述代码来解决该问题

### 回答1: 在Windows系统,可以使用批处理文件(.bat)实现查找包含特定关键词的文件移动到指定文件夹。 以下是一个示例批处理文件: ``` @echo off set "search=关键词" set "path=C:\查找目录" set "dest=C:\移动目录" for /f "delims=" %%i in ('dir /s /b %path%\*%search%.txt') do move "%%i" %dest% echo 查找并移动完成 pause ``` 上面这个批处理文件,关键词是 "关键词",查找目录是 "C:\查找目录",移动目录是 "C:\移动目录"。需要替换成实际的关键词,查找目录移动目录。 您可以将上述代码保存到一个文本文件,并将文件名改为.bat后缀,然后双击运行。 ### 回答2: 可以使用bat脚本来实现查找包含关键词的文件移动到指定文件夹下的功能。下面一个示例的bat脚本代码: ```bat @echo off setlocal enabledelayedexpansion set keyword=关键词 # 设置要查找的关键词 set source_dir=D:\目标文件夹 # 设置要查找的文件夹 set destination_dir=D:\目标文件夹 # 设置要移动到的目标文件夹 if not exist "%destination_dir%" ( mkdir "%destination_dir%" # 如果目标文件夹不存在,则创建目标文件夹 ) for /r "%source_dir%" %%F in (*.txt) do ( find /i "%keyword%" "%%F" >nul # 使用find命令查找关键词 if !errorlevel! equ 0 ( move "%%F" "%destination_dir%" # 移动包含关键词的文件到目标文件夹 ) ) echo 完成移动文件。 ``` 将上述代码保存为一个以.bat为后缀名文件,双击运行该bat文件即可开始对指定文件夹下的.txt文件进行关键词查找,并将包含关键词的文件移动到指定文件夹下。 在脚本,`set keyword=关键词`用于设置要查找的关键词,`set source_dir=D:\目标文件夹`和`set destination_dir=D:\目标文件夹`用于设置要查找的文件夹和要移动到的目标文件夹。 脚本使用for命令循环查找指定文件夹及其子文件夹下的所有.txt文件,然后使用find命令查找关键词。如果找到了包含关键词的文件,将使用move命令将文件移动到目标文件夹下。 运行完成后,显示"完成移动文件"的提示语,表示移动文件的操作已经完成。 ### 回答3: 在 Windows ,可以使用bat脚本来实现查找包含指定关键词的文件,并将这些文件移动到指定的文件夹下。 首先,创建一个新的文本文件,命名为search_move.bat。然后,将以下代码复制粘贴到该文件: ```batch @echo off setlocal enabledelayedexpansion set keyword=关键词 // 将“关键词”替换为你要查找的关键词 set source_folder=C:\source_folder // 将“C:\source_folder”替换为你要查找的文件夹路径 set destination_folder=C:\destination_folder // 将“C:\destination_folder”替换为你要移动至的文件夹路径 for /r "%source_folder%" %%i in (*.txt) do ( findstr /C:"%keyword%" "%%i" >nul if !errorlevel! equ 0 ( move "%%i" "%destination_folder%" echo 移动文件 "%%i" 至 "%destination_folder%" 成功。 ) ) ``` 在代码,你需要将`关键词`替换为你要查找的关键词,`C:\source_folder`替换为你要查找的文件夹路径,以及`C:\destination_folder`替换为你要移动至的文件夹路径。 保存文件后,双击运行search_move.bat脚本。脚本将会在指定的文件夹及其子文件夹查找包含关键词的txt文件,并将其移动到指定的文件夹下。 运行完成后,脚本会输出每个成功移动文件的信息。 注意:在使用bat脚本时,请确保文件夹路径正确并且文件夹存在。此外,脚本只会查找txt文件,如果需要查找其他类型的文件,请将`(*.txt)`的`.txt`替换为你要查找的文件类型。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值