2012-10-19 87 views
1

當您將文件複製並粘貼到同一目錄中時,我期望獲得與Windows中獲得的類似行爲。爲複製文件生成文件名

對於e.g,如果你複製/粘貼一個名爲foo.txt文件,它會創建foo Copy.txt,如果你更貼一次,它創建foo Copy(2).txt,如果你複製/ foo Copy.txtfoo Copy Copy.txt創建粘貼。

有沒有一個Java實用程序的功能呢?我查看了File.createTempFile,但它生成的文件名太長,並且包含一個類似於UID的子字符串。

+5

我不知道任何的API,但它是簡單到足夠多自己動手寫「如果(file.exists)」 ...... – dngfng

回答

0

通過將FileChooser與「showSaveDialog」 - 方法結合使用,您將獲得所需的結果,因爲java將使用現有文件的操作系統行爲。

+0

我不想用戶必須在對話框中輸入任何內容。 – Ash

0

有時候,你只需要先完成這項工作,它會給你一個API的讚賞。然後,您可以編寫自己的實用方法

File original = new File("build.xml"); 
String path = original.getAbsoluteFile().getParent(); 
String name = original.getName(); 
String ext = name.substring(name.indexOf(".")); 
name = name.substring(0, name.indexOf(".")); 
name = path + File.separator + name; 

int index = 1; 
File copy = new File(name + " (" + index + ")" + ext); 
while (copy.exists()) { 
    index++; 
    copy = new File(name + " (" + index + ")" + ext); 
} 
System.out.println(copy); 
+0

那麼是不是?無論如何,感謝您展示循環如何工作。 Ash

+1

是的,這將是一個*否*,但SO不會讓我把它放入答案;) – MadProgrammer

+0

大聲笑,夠公平的。 – Ash