public class T {
public static void main(String[] args) {
reName("C:\\Users\\ThinkStation\\Desktop\\2021 年末\\12-20\\222",
"kp_error_anim", ".png");
}
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<Test.FileInfo> fileInfoList = new ArrayList<>(nameArr.length);
for(String name : nameArr){
fileInfoList.add(new Test.FileInfo(name));
}
Collections.sort(fileInfoList);
System.out.println("" + Arrays.toString(nameArr));
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("%02d", 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<Test.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(Test.FileInfo other) {
if (other == null){
return 1;
}
return num - other.num;
}
}
}
批量修改文件名
最新推荐文章于 2024-02-14 17:25:13 发布