Моя проблема заключается в следующем: я использую WatchService
, чтобы получать уведомления о новых файлах в определенной папке, теперь, если файл перемещается / копируется или создается в указанной папке, запускается событие и имя нового файл возвращается. Проблема теперь в том, что, если я пытаюсь получить доступ к файлу, и он еще не полностью там (например, копия все еще выполняется), возникает исключение. Я пытался сделать что-то вроде этого:
RandomAccessFile raf = new RandomAccessFile(fileName, "rw");
FileChannel fc = raf.getChannel();
FileLock lck = fc.lock();
Но даже если блокировка получена, иногда все равно возникает исключение, если я пытаюсь записать файл, потому что другой процесс все еще имеет открытый дескриптор.
Теперь, как можно заблокировать файл в Java для действительно эксклюзивного доступа?