Я пишу программу, которая следит за каталогом и когда в нем создаются файлы, она меняет имя и перемещает их в новый каталог. В моей первой реализации я использовал Java Watch Service API, который отлично работал, когда я тестировал 1kb файлы. Проблема, которая возникла, заключается в том, что на самом деле создаваемые файлы находятся где угодно от 50-300 мб. Когда это произошло, API-интерфейс наблюдателя сразу найдет файл, но не сможет его переместить, поскольку он все еще записывается. Я попытался помещать наблюдателя в цикл (который генерировал исключения, пока файл не мог быть перемещен), но это показалось довольно неэффективным.
Так как это не сработало, я попытался использовать таймер, который проверяет папку каждые 10 секунд, а затем перемещает файлы, когда это возможно. Это метод, в который я в конечном итоге пошел.
Вопрос: Есть ли в любом случае сигнал, когда файл записывается без проверки исключения или постоянного сравнения размера? Мне нравится идея использовать API Watcher только один раз для каждого файла, а не постоянно проверять таймер (и работать с исключениями).
Все отзывы приветствуются!
нт