前言
重名文件加后缀重命名过滤
如果存在重名,则在后面(扩展名的前面)加后缀 "_1", "_2", "_3", ... 直到文件名不重复为止。
实现
public class Main {
public static void main(String[] args) {
String originalFileName = "1232121421412(0).jpg";
Boolean repeat = true;
// 文件是否存在重名
StringBuilder fileName = new StringBuilder();
// 如果存在重名,则加_1后缀
if (repeat) {
int suffixNumber = 0;
String fileExtensionName = "";
// 分离文件拓展名(.jpg .png ... )
for (int i = originalFileName.length() - 1; i > 0; i--) {
if (originalFileName.charAt(i) == '.') {
fileExtensionName = originalFileName.substring(i, originalFileName.length());
fileName = new StringBuilder(originalFileName.substring(0, i));
break;
}
}
// 加_1后缀
fileName.append("_" + ++suffixNumber);
// 如果已经存在 _1 后缀,则改为 _2 , _3 ,...直到不重复为止
while (repeat) {
// 把我们添加的"_"后面所有数字字符删除
for (int length = fileName.length(); length > 0; length--) {
char c = fileName.charAt(length - 1);
if (c != '_') {
fileName.delete(length - 1, length);
}
else {
break;
}
}
fileName.append(++suffixNumber);
// 假设_23时不再重复
if ("23".equals(fileName.substring(fileName.length() - 2, fileName.length()))) {
break;
}
}
// 合并扩展名后返回
fileName.append(fileExtensionName);
System.out.println(fileName);
}
}
}