В моем приложении я наблюдаю каталог для новых файлов.
Я сохраняю массив текущих файлов, полученных с помощью Files.list(dir)
, обрабатываю этот список один файл за другим, а затем перезагружаю каталог с помощью Files.list()
снова.
Хотя я сам никогда не сталкивался с проблемой, сотрудник сказал мне, что программное обеспечение предшественника провело дополнительную проверку того, что файл старше 3 секунд (рассчитывается с помощью (Files.getLastModifiedTime(path) - System.currentTimeMillis()) > 3000
), потому что были неполные проблемыпереданные (или еще лучше: еще не полностью переданные) файлы были обработаны.
Могу ли я предположить, что файлы, возвращенные Files.list()
, были полностью скопированы в каталог, который я наблюдаю?
Есть ли более чистый способ проверить, завершен ли файл?Проверка на 3 секунды больше похожа на хак, файл с размером в несколько ГБ может быть скопирован по медленному соединению (сети) и может быть не полностью передан даже после 3-х секунд.