废话不多说,直接撸代码
package com.lonton.filerename;
import java.io.File;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.apache.log4j.Logger;
/**
- 用于修改批量修改文件名。
- @author Zhou
*/
public class FileRenamer {
private static Logger logger = Logger.getLogger(FileRenamer.class);
private static int num;
/**
* 该方法可以使用递归实现子文件夹的文件名得到修改。
* @param parentFolder 代表需要改名的文件所在目录
* @param acceptNamePattern 代表需要改名的文件所需符合的正则表达式
* @param renameTo 代表改名的结果
* @param recursive 代表是否递归子目录
* @return int类型 用于返回改名的文件数量
*
*/
public int rename(File parentFolder, String acceptNamePattern, String renameTo, boolean recursive) {
if (parentFolder != null && parentFolder.isDirectory()) {
logger.debug(parentFolder);
File[] listFiles = parentFolder.listFiles();
// 编译正则表达式
Pattern pattern = Pattern.compile(acceptNamePattern);
for (File file : listFiles) {
// 是否递归子文件夹,为true时递归
if (recursive) {
if (file.isDirectory()) {
rename(file, acceptNamePattern, renameTo, recursive);
}
}
String fileName = file.getName();
Matcher matcher = pattern.matcher(fileName);
// 使用正则判断是否是“数字”+“.pdf”格式
boolean matches = matcher.matches();
// 如果匹配,则需要改名,以下为改名步骤
if (matches) {
// 获取新文件的全路径名
renameTo = "第" + fileName.substring(0, fileName.lastIndexOf(".")) + "项" + ".pdf";
File newFile = new File(file.getParent() + File.separator + renameTo);
// 将获取的全路径名修改至目标文件
boolean result = file.renameTo(newFile);
if (result) {
num++;
}
}
}
}
return num;
}
}