Как узнать статус производителя по потребителю? - PullRequest
0 голосов
/ 25 июня 2019

Я читаю файл большого размера, примерно 2 ГБ.Но я не знаю, написал ли автор полностью файл.Есть ли способ проверить, полностью ли записан файл со стороны читателя?

Ответы [ 2 ]

0 голосов
/ 25 июня 2019

AFAIK, нет портативного способа сделать это. Однако в Linux вы можете проверить, есть ли у какого-либо другого процесса открытый файл, выполнив команду lsof и обработав ее вывод.

Например:

lsof /home/fred/someFile

выведет pids для процесса или процессов, у которых этот файл открыт. Если вы можете предположить, что процесс, который записывает файл, закрывает его после завершения записи (и не открывает его снова), вы можете использовать вывод lsof, чтобы проверить, полностью ли записан файл.

Вы можете запустить команду lsof из Java, используя Process / ProcessBuilder.

0 голосов
/ 25 июня 2019

Без какого-либо кода будет сложно сделать какие-либо конкретные предложения, но почему бы просто не расширить класс, который вы используете как писатель, и добавить к нему простой CountDownLatch (яесли предположить, что читатель и писатель работают в двух разных потоках) и вызвать countDown(), как только запись будет завершена?На стороне читателя вы просто используете метод await защелки.

...