Принудительно переименовать файл в Java - PullRequest
3 голосов
/ 18 января 2010

Могу ли я использовать любую утилиту для принудительного переименования файла из Java.io ?
Я понимаю, что в Java 7 есть эти функции, но я не могу его использовать ...
Если я сделаю

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

и если newfile существует, то он завершается ошибкой.

Как сделать принудительное переименование?

Ответы [ 3 ]

5 голосов
/ 18 января 2010

Я думаю, что вы должны сделать это вручную - это означает, что вы должны проверить, существует ли целевое имя уже в виде файла, и удалить его, прежде чем делать реальное переименование.

Вы можете написать процедуру, чтобы сделать это:

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

Недостатком этого подхода является то, что после удаления и перед переименованием другой процесс может создать новый файл с именем.

Следовательно, другой возможностью может быть копирование содержимого источника в целевой файл и последующее удаление исходного файла. Но это потребует больше ресурсов (в зависимости от размера файла) и должно быть сделано только в том случае, если вероятность восстановления удаленного файла вероятна.

0 голосов
/ 24 августа 2018

Мне не удалось переименовать, когда папка открыта. Установка следующего свойства в Java решила мою проблему:

dirToRename.setExecutable(true); 
0 голосов
/ 18 января 2010

Вы всегда можете сначала удалить newFile:

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

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