在Java中强制重命名文件

3

我能使用任何工具来强制重命名一个来自 Java.io 的文件吗?
我知道 Java 7 有这些功能,但我不能使用它...
如果我执行

File tempFile = File.createTempFile();
tempFile.renameTo(newfile)

如果newfile已经存在,则重命名操作会失败。

如何进行强制重命名?

3个回答

5

我认为您需要手动完成此操作 - 这意味着在进行真正的重命名之前,您需要检查目标名称是否已存在,并将其删除。

您可以编写程序来完成此操作:

public void forceRename(File source, File target) throws IOException
{
   if (target.exists()) target.delete();
   source.renameTo(target)
}

这种方法的缺点是,在删除文件后并在重命名之前,其他进程可能会创建一个同名的新文件。
因此,另一种可能性是将源文件的内容复制到目标文件中,然后再删除源文件。但这会消耗更多资源(取决于文件大小),只有在删除文件可能被重新创建的情况下才应该这样做。

然后尝试第二个解决方案,复制内容并删除旧文件。我需要提供示例代码吗? - Mnementh

0

你可以先删除 newFile

File newFile = ...
File file = ...

newFile.delete();
file.renameTo(newFile);

-1

每当一个文件夹处于打开状态时,我无法重命名。在Java中设置以下属性解决了我的问题:

dirToRename.setExecutable(true); 

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接