У меня есть приложение Java, которое контролирует каталог для новых файлов и обрабатывает любой новый файл, который он видит в каталоге. Приложение должно работать как на Linux, так и на окнах env. Проблема заключается в Linux, когда пользователь вручную копирует файл в каталог, приложение выбирает файл, прежде чем он полностью копируется в каталог. У меня пытался заблокировать файл, используя различные методы, но приложение может получить блокировку на файле, даже если файл все еще копируется системой linux. Я также считаю, что проверить файл, используя команду lsof, но она специфична для Linux, поэтому я стараюсь избегать этого.Linux + Java + Windows: проверить, полностью ли скопирован файл
Может кто-то пожалуйста, предложить способ предотвратить неполный файл подхватили приложение? Заранее спасибо.
один подход к этой проблеме - всегда копировать два файла в целевую папку. Сначала вы копируете фактический файл данных в целевую папку, разрешите вызывать этот файл «fileName.dat». После того, как эта копия файла завершится успешно, вы затем создадите фиктивный файл с именем «fileName.done» в целевой папке. Ваше приложение обнаруживает файлы, заканчивающиеся на «.done», и он знает, что «fileName.dat» готов к чтению. – Hector
Это имело бы смысл, если бы мы имели контроль над тем, кто копирует файл в каталоге, к сожалению, мы не знаем, кто будет копировать файл и как его вести. – Prashant
Не используйте его до тех пор, пока его размер не будет стабильным, скажем, пять минут или все, что вы сочтете подходящим. – EJP