Java文件批量复制工具实现解析
目录
引言
1、需求背景
2、实现原理
3、实现步骤
3.1 路径预处理
3.2 复制路径解析
3.3 递归复制逻辑
4、测试用例
5、总结
引言
在项目开发中,文件复制操作是常见的需求场景。本文将解析一个基于Java NIO实现的文件批量复制工具,该工具支持多路径批量操作、目录递归复制和文件名过滤功能,可有效提升文件操作效率。
1、需求背景
传统文件复制操作存在以下痛点:
- 需要手动逐个复制文件/目录
- 缺乏批量处理能力
- 无法灵活过滤指定文件
- 目录结构保持困难
本工具通过配置化方式实现:
- 批量路径处理(分号分隔)
- 完整目录结构复制
- 指定文件名过滤
- 路径自动格式化
2、实现原理
核心实现基于Java 7+的NIO API:
- Files.walkFileTree实现递归遍历
- Path处理相对路径
- StandardCopyOption控制覆盖策略
- 路径预处理保证格式统一
3、实现步骤
3.1 路径预处理
保证后续路径拼接的正确性,避免出现source\ + target格式错误
if (StringUtils.isNotBlank(sourcePath) && !StringUtils.endsWith(sourcePath,"\\")){sourcePath += "\\";
}
if (StringUtils.isNotBlank(targetPath) && !StringUtils.endsWith(targetPath,"\\")){targetPath += "\\";
}
3.2 复制路径解析
将com.example.Test.java转换为目录结构com\example\Test.java并分离文件名
String[] copyPaths = StringUtils.split(copyPath + ";", ";");
for (String copyPathTemp : copyPaths){// 路径清洗和转换copyPathTemp = copyPathTemp.replace("\n", "").replace("\r","").trim();copyPathTemp = copyPathTemp.replace(".", "\\");// 处理带文件名的路径(如:com.example.Test.java)if (copyPathTemp.indexOf(".")>-1){copyPathTemp = replaceLastSpecialChar