代码之家  ›  专栏  ›  技术社区  ›  sblundy

在java中将文件重命名为其他文件

  •  2
  • sblundy  · 技术社区  · 16 年前

    我有一个文件需要重命名为现有文件的文件。这是对现有JAR文件的复制、修改、替换原始操作。我已经完成了前两步,我只需要帮助更换原来的钻头。将JAR的新版本重命名为旧版本的最佳方法是什么。旧罐子不需要保存,我也不想有一个新罐子的副本,它的名字的首字母粘在周围。

    我已经有了commons lang和io,所以如果有一种方法我错过了,那就太好了。

    5 回复  |  直到 16 年前
        1
  •  3
  •   Alnitak    16 年前

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

    你可能需要打电话 File.delete() 首先是原始文件-某些系统不会将文件重命名为现有文件。

        2
  •  2
  •   Powerlord    16 年前

    java.io.File 对象:一个用于新文件,一个用于旧文件。

    让我们称之为 oldFile newFile

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

    编辑:mmyers打败了我。

        3
  •  2
  •   James Van Huis    16 年前

    这将使您合理地接近:

    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();
    }
    
        4
  •  1
  •   Michael Myers KitsuneYMG    16 年前

    有什么问题吗 deleting 老一套 renaming 新的?

        5
  •  1
  •   kasperjj    16 年前

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

    重命名部分听起来很简单。。。只需使用File.renameTo。。。不幸的是,与此相关的平台特定问题很多。某些平台不允许您覆盖现有文件,其他平台不允许您重命名文件,以便将位置更改到另一个分区。如果您想使这个过程完全安全,您需要先删除旧文件,然后重命名新文件(或者复制,如果可以更改分区的话)。如果您的应用程序/计算机在执行此操作时崩溃,那么这自然容易出现问题,因为它不再是原子操作。因此,您需要向应用程序启动过程添加一个检查,以查找发生崩溃时重命名操作的重命名操作。如果您只是以这种方式更新单个文件,那么应该很容易。

    然而,如果您真的想重新加载jar,还有一些问题需要解决,但是您需要提供更详细的情况视图,以获得关于如何进行的适当建议。