我有一个文件需要重命名为现有文件。这是对现有JAR文件的复制,修改,替换原始操作。我已经完成了前两个步骤,我只需要帮助替换原始位。将新版本的JAR重命名为旧版本的最佳方法是什么?旧的JAR不需要保留,我不希望有一个新的副本,其初始名称仍然存在。
我已经有公共语言和io,所以如果有一种我错过的方法,那就太棒了。
答案 0 :(得分:3)
Java.io.File.renameTo(java.io.File)
您可能需要先在原始文件上调用File.delete()
- 某些系统不会将文件重命名为现有文件。
答案 1 :(得分:2)
您将需要创建两个java.io.File
个对象:一个用于新文件,一个用于旧文件。
让我们称呼这些oldFile
和newFile
。
oldFile.delete()
newFile.renameTo(oldFile);
编辑:mmyers打败了我。
答案 2 :(得分: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();
}
答案 3 :(得分:1)
答案 4 :(得分:1)
我不完全确定你是否只是在询问如何在文件系统中重命名文件,或者你是否还要重新加载这个新版本的jar?
重命名部分听起来很简单......只需使用File.renameTo ...遗憾的是,有许多与此相关的平台特定问题。某些平台不允许您覆盖现有文件,其他平台不允许您重命名文件,因此它将位置更改为另一个分区。如果要使进程完全安全,则需要先自行删除旧文件,然后重命名新文件(如果可以更改分区,则自行完成)。如果你的应用程序/机器在执行此操作时崩溃,这自然会出现问题,因为它不再是原子操作。因此,您需要在应用程序启动过程中添加一个检查,以查找崩溃发生时位于中间的重命名操作。如果您只是以这种方式更新单个文件,那应该非常简单。
但是,如果你真的想重新加载jar,还有一些问题需要解决,但你需要提供一些更详细的情况视图,以获得有关如何做到这一点的适当建议。