FWIW, начиная с Java 7 и более поздних, предпочтительным ответом для этого, вероятно, должно быть использование java.nio.file.Files#move
:
java.nio.file.Files.move(oldPath, newPath, StandardCopyOption.ATOMIC_MOVE)
Причина, по которойможно было бы предпочесть этот подход из-за этого документированного поведения в java.io.File#renameTo
:
Многие аспекты поведения этого метода по своей природе зависят от платформы: операция переименования может небыть в состоянии переместить файл из одной файловой системы в другую, это может быть не атомарно, и это может не удастся, если файл с целевым абстрактным путем уже существует.Возвращаемое значение всегда следует проверять, чтобы убедиться, что операция переименования прошла успешно.
Обратите внимание, что класс Files определяет метод перемещения для перемещения или переименования файла независимо от платформы.
При использовании java.nio.file.Files#move
можно указать стандартные CopyOption
параметры , которые указывают на более нюансированное поведение (например, что вы хотите сделать, если файл уже существует, нужно ли это делать атомарно, и т. Д..)