一般在windows中如果复制同一个文件在同一个路径下,那么文件名后面会出现一个“-副本”的格式的文件名,现在要求成为“(2)”格式的文件名,特别是在单据导出的时候,代码如下:
/**
* 如果某个路径下已经存在了与要保存的文件名重复了,则在新的文件后面加(1)。。。。
* @param paths
* @param filename
* @param num
* @return
*/
public static String getFileName(String paths, String filename, int num) {
File file = null;
String[] filenameArr = filename.split("\\.");
int length = filenameArr.length;
String filenameStr="";
//此处的目的是为了避免文件名称含有“.”的文件名重复时,出错,我们必须保证是在最后一个“.”的前面加上“(2)”
for(int i=0;i<=length-2;i++){
filenameStr = filenameStr+ filenameArr[i]+".";
}
if (num > 0) {
file = new File(paths + "\\" + filenameStr.substring(0, filenameStr.length()-1) + "(" + String.valueOf(num == 1 ? 2 : num) + ")." + filenameArr[filenameArr.length - 1]);
} else {
file = new File(paths + "\\" + filename);
}
if (file.exists()) {
return getFileName(paths, filename, ++num);
} else {
if (num > 0) {
return paths + "\\" + filenameStr.substring(0, filenameStr.length()-1) + "(" + String.valueOf(num == 1 ? 2 : num) + ")." + filenameArr[filenameArr.length - 1];
} else {
return paths + "\\" + filename;
}
}
}
测试结果如下: