我有一個需要重命名爲現有文件的文件。這是對現有JAR文件的複製,修改和替換原始操作。我已經完成了前兩步,我只需要替換原始位的幫助。將新版本的JAR重命名爲舊版本的最佳方式是什麼?舊的JAR不需要保存,我不想擁有新名稱的副本,但它的初始名稱仍然存在。將文件重命名爲java中的另一個文件
我已經有了commons lang和io,所以如果有一種方法我錯過了,那將會很棒。
我有一個需要重命名爲現有文件的文件。這是對現有JAR文件的複製,修改和替換原始操作。我已經完成了前兩步,我只需要替換原始位的幫助。將新版本的JAR重命名爲舊版本的最佳方式是什麼?舊的JAR不需要保存,我不想擁有新名稱的副本,但它的初始名稱仍然存在。將文件重命名爲java中的另一個文件
我已經有了commons lang和io,所以如果有一種方法我錯過了,那將會很棒。
您將需要創建兩個java.io.File
對象:一個用於新文件,一個用於舊文件。
可以撥打這些oldFile
和newFile
。
oldFile.delete()
newFile.renameTo(oldFile);
編輯:mmyers打我吧。
renameTo是平臺相關的,可能無法在任何情況下工作。你應該經常檢查它是否成功後做。 – 2008-11-06 18:04:32
Java.io.File.renameTo(java.io.File)
您可能需要調用File.delete()
先對原始文件第一 - 一些系統不會將文件重命名到現有的文件。
剛剛在Windows XP中檢查過,如果不刪除原始文件,這將不起作用。 – 2008-11-06 18:01:06
這應該讓你相當接近:
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();
}
我不能完全肯定,如果你是問如何簡單地重命名該文件在文件系統中,或者如果你也想重裝你的JAR這個新版本?
重命名部分聽起來很簡單...只是使用File.renameTo ...不幸的是,有很多與此相關的平臺特定問題。某些平臺不允許覆蓋現有文件,其他平臺不允許您重命名文件,以便將位置更改爲另一個分區。如果你想讓這個過程完全安全,你需要先去掉舊文件然後重新命名(或者如果可以進行分區更改,則複製)來完成這個過程。如果您的應用程序/機器在執行此操作時崩潰,這自然會出現問題,因爲它不再是原子操作。因此,您需要在您的應用程序啓動過程中添加一個檢查,以查找崩潰發生時位於中間的重命名操作。如果您只是以這種方式更新單個文件,它應該很容易。
但是,如果您確實想重新加載該jar,則還有一些問題需要解決,但您需要更詳細地瞭解情況以獲取有關如何執行此操作的正確建議。
包含在JAR文件或Jar文件本身內的文件? – 2008-11-06 17:50:59