一般在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;
}
}
}
測試結果如下: