You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java如何不指定动态文件名将源文件夹文件复制到目标文件夹

Java 实现源文件夹下全部动态文件移动到目标文件夹的方案

问题根因

Files.move() 要求目标路径必须是完整的目标文件路径,而非仅目标文件夹路径。如果直接传入C:\temp1作为目标路径,JVM会尝试将源文件重命名为temp1,而不是将源文件放入temp1文件夹下,这就是你只有目标路径下存在测试文件才能运行的原因。

实现代码

无需硬编码任何文件名,会自动识别源文件夹下的所有文件,移动到目标文件夹中:

import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.StandardCopyOption;
import java.io.IOException;

public class FileMoveUtil {
    public static void main(String[] args) throws IOException {
        // 定义源、目标文件夹路径,可按需修改
        Path srcDir = Paths.get("C:\\temp");
        Path destDir = Paths.get("C:\\temp1");

        // 目标文件夹不存在时自动创建
        if (!Files.exists(destDir)) {
            Files.createDirectories(destDir);
        }

        // 遍历源文件夹下所有一级文件,自动获取动态文件名
        Files.list(srcDir).forEach(sourcePath -> {
            try {
                // 拼接完整目标路径:目标文件夹 + 源文件原始文件名
                Path targetPath = destDir.resolve(sourcePath.getFileName());
                // 移动文件,REPLACE_EXISTING参数表示允许覆盖目标路径同名文件,不需要可删除
                Files.move(sourcePath, targetPath, StandardCopyOption.REPLACE_EXISTING);
            } catch (IOException e) {
                e.printStackTrace();
            }
        });
    }
}

补充说明

  • 如果需要移动源文件夹下的多层级子目录和文件,将Files.list(srcDir)替换为Files.walk(srcDir)即可自动递归遍历所有内容
  • 如果仅需要移动特定后缀的文件,可以在遍历前加过滤逻辑,比如.filter(path -> path.getFileName().toString().endsWith(".csv"))仅移动csv文件

内容的提问来源于stack exchange,提问作者Revanth

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 15:06:00