一、规则如下:
设文件名x.x,如需要保存文件的目标位置已经有x.x,则自动命名本次保存文件的名称为x(1).x;如果x(1).x也已经存在,则命名为x(2).x。如此类推,直到不再重复。
二、实现代码:
//保存文件之前看看有没有同名文件,有的话后面加(1),如果加了还有同名,就加(1+N)直到不再重名
File file = null;
int maxTry = 0xFFFF;
String fileName = destFileName;
for (int i = 0; i < maxTry; i++) {
if (i == 0) {
file = new File(dir, destFileName);
if (!file.exists()) {
file.createNewFile();
break;
}
}
if (i > 0) {
String fileNameSpilt[] = destFileName.split("\\.");
String fileNameWithoutLastPart = "";
//如果有后续名,去除后续名
for (int j = 0; j < fileNameSpilt.length - 1; j++) {
fileNameWithoutLastPart += fileNameSpilt[j];
}
if (i == maxTry) {
Log.e("DownloadUtil", "重试次数过多,以时间戳方式保存");
fileName = String.format("%d.%s", System.currentTimeMillis(), fileNameSpilt.length > 1 ? fileNameSpilt[fileNameSpilt.length - 1] : "");
} else {
fileName = String.format("%s(%d).%s", fileNameWithoutLastPart, i, fileNameSpilt.length > 1 ? fileNameSpilt[fileNameSpilt.length - 1] : "");
}
file = new File(dir, fileName);
if (!file.exists()) {
file.createNewFile();
break;
}
}
}