我有一个文件需要重命名为现有文件的文件。这是对现有JAR文件的复制、修改、替换原始操作。我已经完成了前两个步骤,我只需要帮助更换原来的钻头。将JAR的新版本重命名为旧版本的最佳方法是什么。旧的JAR不需要保存,我也不想有一个新JAR的副本,它的初始名称一直保留着。
我已经有了commons lang和io,所以如果有一个方法我错过了,那就太好了。
Java.io.File.renameTo(java.io.File)
您可能需要首先对原始文件调用File.delete()
——有些系统不会将文件重命名为现有文件。
您将需要创建两个java.io.File
对象:一个用于新文件,一个用于旧文件。
让我们把它们称为oldFile
和newFile
。
oldFile.delete()
newFile.renameTo(oldFile);
编辑:mmyers打败了我。
这应该会让你相当接近:
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,还有一些问题需要解决,但你需要对情况进行更详细的了解,以获得正确的建议。