强制用Java重命名文件

Qui*_*Par 3 java file-io rename file file-rename

我可以使用任何实用程序从Java.io强制重命名文件吗?
我知道Java 7有这些功能,但我不能使用它...
如果我做了

File tempFile = File.createTempFile();
tempFile.renameTo(newfile)
Run Code Online (Sandbox Code Playgroud)

如果存在newfile则会失败.

如何强制重命名?

Mne*_*nth 5

我认为您必须手动执行 - 这意味着您必须检查目标名称是否已作为文件存在并在执行实际重命名之前将其删除.

你可以写一个例程来做:

public void forceRename(File source, File target) throws IOException
{
   if (target.exists()) target.delete();
   source.renameTo(target)
}
Run Code Online (Sandbox Code Playgroud)

这种方法的缺点是,在删除之后和重命名之前,另一个进程可以创建一个具有该名称的新文件.

因此,另一种可能性是将源的内容复制到目标文件中,然后删除源文件.但这会占用更多资源(取决于文件的大小),并且只有在可能重新创建已删除文件的情况下才应该这样做.