Скопируйте файл на Java без блокировки оригинала - PullRequest
0 голосов
/ 30 января 2019

У меня есть папка, содержащая 20 файлов, от «myFile1.txt» до «myFile20.txt».Программа, назовем это «WRITER», может записывать в эти файлы.

Теперь я хотел бы скопировать папку на Java, используя FileUtils от Apache commons , точнее, метод FileUtils.copyDirectoryToDirectory () .Тем не менее, я боюсь, что если я воспользуюсь методом, я заблокирую файлы во время процесса копирования, так что программа «WRITER» не сможет больше записывать в файлы.

Кто-нибудь знает, есть ли метод в FileUtilsблокирует файлы?Как я могу предотвратить блокировку оригинальных файлов при копировании (если это даже так)?

Спасибо!

РЕДАКТИРОВАТЬ: Я использую Windows

1 Ответ

0 голосов
/ 30 января 2019

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

Если у вас есть контроль надКак для чтения, так и для записи файла, вы можете использовать nio.FileChannel и заблокировать предоставляемые им функции.И читатель, и писатели должны проверить блокировку перед доступом.

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