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

时间:2008-11-06 17:48:24

标签: java file

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

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

5 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:2)

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

让我们称呼这些oldFilenewFile

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)

旧版本deleting和新版本renaming是否存在问题?

答案 4 :(得分:1)

我不完全确定你是否只是在询问如何在文件系统中重命名文件,或者你是否还要重新加载这个新版本的jar?

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

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