ОС может помочь вам добиться стабильного чтения, но для этого необходимо, чтобы оба приложения были написаны с учетом этого.
В двух словах, вы открываете файл в своем java-приложении с эксклюзивным разрешением на чтение / запись - это гарантирует, что никто, включая ваше другое приложение, не изменяет файл, пока вы его читаете. Класс FileLock поможет вам обеспечить эксклюзивный доступ к файлу.
Затем ваше другое приложение будет периодически пытаться записать файл. Если это происходит одновременно с чтением файла, доступ будет запрещен, а другое приложение должно повторить попытку. Это критическая часть, поскольку, если приложение не ожидает, что файл будет недоступен, и рассматривает это как условие фатальной ошибки, запись завершится неудачно, и приложение не сохранит данные и может завершиться с ошибкой / выйти и т. Д.
Если другое приложение всегда должно иметь возможность записи в файл, вам следует избегать использования эксклюзивных операций чтения. Вместо этого вы должны попытаться обнаружить несогласованное чтение, например, путем проверки последней измененной отметки времени, когда вы начинаете чтение и когда заканчиваете чтение. Если временные метки совпадают, тогда вы можете идти и иметь постоянное чтение.