FileUtils.moveDirectory (src, dst) безопасен для перемещения файлов между каталогами - PullRequest
0 голосов
/ 05 апреля 2019

Я должен переместить огромные файлы на сервере из одной папки в другую, я использую

FileUtils.moveDirectory(src, dst);

Это быстро, потому что moveDirectory просто переименовывает src в dst, в некоторых случаях, когда dst является подпапкой src, он копирует файлы в dst и удаляет из src ( что никогда не произойдет в моем случае dst никогда не является подкаталогом src).

Теперь, есть ли вероятность, что FileUtils.moveDirectory(src, dst); не удастся, если да, будут ли мои файлы в источнике? потому что это единственная копия, и я не могу потерять файлы. Либо полностью перейдите на dst, либо просто выйдите из строя и оставьте мои файлы на src.

1 Ответ

1 голос
/ 05 апреля 2019

Краткий ответ: Да;даже если что-то пойдет не так, файлы будут в src.

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

Исходный код для FileUtils : см. Строку 2881

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...