Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在java中将文件重命名为其他文件_Java_File - Fatal编程技术网

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

在java中将文件重命名为其他文件,java,file,Java,File,我有一个文件需要重命名为现有文件的文件。这是对现有JAR文件的复制、修改、替换原始操作。我已经完成了前两步,我只需要帮助更换原来的钻头。将JAR的新版本重命名为旧版本的最佳方法是什么。旧罐子不需要保存,我也不想有一个新罐子的副本,它的名字的首字母粘在周围 我已经有了commons lang和io,所以如果我错过了一个方法,那就太好了。新的和旧的有问题吗?您需要创建两个java.io.File对象:一个用于新文件,一个用于旧文件 让我们调用这些oldFile和newFile oldFile.del

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


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

新的和旧的有问题吗?

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

让我们调用这些
oldFile
newFile

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


但是,如果您真的想重新加载jar,还有一些问题需要解决,但是您需要提供更详细的情况视图,以便获得正确的建议。

jar文件中包含的一个文件,或者Jar文件本身?刚刚在Windows XP上检查过,如果不删除原始文件,这将无法工作。它是否引发异常或只是返回false?renameTo依赖于平台,可能无法在所有情况下工作。您应该始终检查在完成后是否成功。