在java中将文件重命名为另一个文件

我有一个文件,我需要重命名为现有文件的文件。 这是对现有JAR文件的复制,修改,替换原始操作。 我已经完成了前两个步骤,我只需要帮助替换原始位。 将新版本的JAR重命名为旧版本的最佳方法是什么。 旧的JAR不需要保留,我不希望有一个新的副本,其初始名称仍然存在。

我已经有公共语言和io,所以如果有一种我错过的方法,那就太棒了。

您将需要创建两个java.io.File对象:一个用于新文件,一个用于旧文件。

让我们调用这些oldFilenewFile

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

编辑:mmyers打败了我。

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

您可能需要先在原始文件上调用File.delete() – 某些系统不会将文件重命名为现有文件。

这应该让你合理地接近:

 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 …遗憾的是,有许多与此相关的平台特定问题。 某些平台不允许您覆盖现有文件,其他平台不允许您重命名文件,因此它将位置更改为另一个分区。 如果要使进程完全安全,则需要先自行执行此过程,先删除旧文件,然后重命名新文件(如果可以更改分区则复制)。 如果你的应用程序/机器在执行此操作时崩溃,这自然会出现问题,因为它不再是primefaces操作。 因此,您需要在应用程序启动过程中添加一个检查,以查找崩溃发生时位于中间的重命名操作。 如果您只是以这种方式更新单个文件,那应该非常简单。

但是,如果你真的想要重新加载jar,那么还有一些问题需要解决,但你需要提供一些更详细的情况视图,以获得有关如何操作的适当建议。