2010-01-18 96 views
3

我可以使用任何實用程序對文件進行強制重命名:Java.io
據我所知,Java 7中具有這些功能,但我不能用它...
如果我做了強制重命名Java中的文件

File tempFile = File.createTempFile(); 
tempFile.renameTo(newfile) 

如果newfile中存在,那麼它的失敗。

如何進行強制重命名?

回答

5

我認爲你必須手動做 - 這意味着你必須檢查目標名是否已經作爲一個文件存在,並在做真正的重命名之前將其刪除。

你可以寫一個程序,做到這一點:

public void forceRename(File source, File target) throws IOException 
{ 
    if (target.exists()) target.delete(); 
    source.renameTo(target) 
} 

這種方法的缺點是,在刪除後和重命名另一個進程可以創建一個名爲新的文件之前。

因此,另一種可能性是將源的內容複製到目標文件中,然後刪除源文件。但是這會消耗更多的資源(取決於文件的大小),只有在可能重新創建已刪除文件的情況下才應該這樣做。

+0

我想,以避免競爭條件...... – 2010-01-18 12:16:39

+0

然後嘗試第二種方案,但複製的內容,並刪除舊文件。我應該提供示例代碼嗎? – Mnementh 2010-01-18 12:25:20

0

你總是可以刪除newFile第一:

File newFile = ... 
File file = ... 

newFile.delete(); 
file.renameTo(newFile);