public class ReName {
public static void main(String[] args) {
reName("C:\\Users\\ThinkStation\\Desktop\\2021 年末\\12-20\\222",
"kp_error_anim", ".png");
}
/**
* 批量文件重命名
*
* 要求: 原文件名满足 fileName_123.xxx 格式。
* 修改后文件名为 prefix_00.suffix
*
* @param dirPath 文件夹路径
* @param prefix 修改后文件名前一部分
* @param suffix 修改后文件名后缀
*/
static void reName(String dirPath, String prefix, String suffix){
File dirFile = new File(dirPath);
if (dirFile == null || dirFile.isFile() ||
!dirFile.exists()){
System.out.println("error");
return;
}
String[] nameArr = dirFile.list(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
System.out.println("accept " + name);
if (name.endsWith(suffix)){
return true;
}
return false;
}
});
List<FileInfo> fileInfoList = new ArrayList<>(nameArr.length);
for(String name : nameArr){
fileInfoList.add(new FileInfo(name));
}
Collections.sort(fileInfoList);
System.out.println("" + Arrays.toString(nameArr));
final String format ;
if (fileInfoList.size() < 100){
format = "%02d";
} else{
format = "%03d";
}
for(int i=0; i<fileInfoList.size(); i++){
String name = fileInfoList.get(i).name;
File file = new File(dirFile + File.separator + name);
String num = String.format(format, i);
File newFile = new File(dirPath + File.separator + prefix + "_" + num + suffix);
boolean flag = file.renameTo(newFile);
System.out.println("rename " + flag);
}
}
static class FileInfo implements Comparable<FileInfo> {
String name;
int num;
public FileInfo(String name){
this.name = name;
if (name.contains(".")) {
String noSuffixName = name.substring(0, name.lastIndexOf("."));
if (noSuffixName.contains("_")) {
String[] arr = noSuffixName.split("_");
if (arr.length >= 2) {
try {
num = Integer.parseInt(arr[arr.length - 1]);
} catch (NumberFormatException e) {
e.printStackTrace();
}
}
}
}
}
@Override
public int compareTo(FileInfo other) {
if (other == null){
return 1;
}
return num - other.num;
}
}
}
批量修改文件名
最新推荐文章于 2024-08-09 04:01:42 发布
此篇博客介绍了如何使用ReName类实现文件名的批量重命名,支持特定格式转换,并处理文件夹路径。它针对(fileName_123.xxx)类型的文件,将它们转换为(prefix_00.suffix)格式,涉及文件筛选和排序功能。
摘要由CSDN通过智能技术生成