2008-11-06 44 views
2

我有一個需要重命名爲現有文件的文件。這是對現有JAR文件的複製,修改和替換原始操作。我已經完成了前兩步,我只需要替換原始位的幫助。將新版本的JAR重命名爲舊版本的最佳方式是什麼?舊的JAR不需要保存,我不想擁有新名稱的副本,但它的初始名稱仍然存在。將文件重命名爲java中的另一個文件

我已經有了commons lang和io,所以如果有一種方法我錯過了,那將會很棒。

+0

包含在JAR文件或Jar文件本身內的文件? – 2008-11-06 17:50:59

回答

2

您將需要創建兩個java.io.File對象:一個用於新文件,一個用於舊文件。

可以撥打這些oldFilenewFile

oldFile.delete() 
newFile.renameTo(oldFile); 

編輯:mmyers打我吧。

+1

renameTo是平臺相關的,可能無法在任何情況下工作。你應該經常檢查它是否成功後做。 – 2008-11-06 18:04:32

3

Java.io.File.renameTo(java.io.File)

您可能需要調用File.delete()先對原始文件第一 - 一些系統不會將文件重命名到現有的文件。

+0

剛剛在Windows XP中檢查過,如果不刪除原始文件,這將不起作用。 – 2008-11-06 18:01:06

2

這應該讓你相當接近:

public boolean replaceOldJar(String originalJarPath, java.io.File newJar) { 
    java.io.File originalJar = new java.io.File(originalJarPath); 
    if (!originalJar.isFile()) { 
     return false; 
    } 
    boolean deleteOldJarSucceeded = originalJar.delete(); 
    if (!deleteOldJarSucceeded) { 
     return false; 
    } 
    newJar.renameTo(originalJar); 
    return originalJar.exists(); 
} 
1

我不能完全肯定,如果你是問如何簡單地重命名該文件在文件系統中,或者如果你也想重裝你的JAR這個新版本?

重命名部分聽起來很簡單...只是使用File.renameTo ...不幸的是,有很多與此相關的平臺特定問題。某些平臺不允許覆蓋現有文件,其他平臺不允許您重命名文件,以便將位置更改爲另一個分區。如果你想讓這個過程完全安全,你需要先去掉舊文件然後重新命名(或者如果可以進行分區更改,則複製)來完成這個過程。如果您的應用程序/機器在執行此操作時崩潰,這自然會出現問題,因爲它不再是原子操作。因此,您需要在您的應用程序啓動過程中添加一個檢查,以查找崩潰發生時位於中間的重命名操作。如果您只是以這種方式更新單個文件,它應該很容易。

但是,如果您確實想重新加載該jar,則還有一些問題需要解決,但您需要更詳細地瞭解情況以獲取有關如何執行此操作的正確建議。

相關問題