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