AFAIK, нет портативного способа сделать это. Однако в Linux вы можете проверить, есть ли у какого-либо другого процесса открытый файл, выполнив команду lsof
и обработав ее вывод.
Например:
lsof /home/fred/someFile
выведет pids для процесса или процессов, у которых этот файл открыт. Если вы можете предположить, что процесс, который записывает файл, закрывает его после завершения записи (и не открывает его снова), вы можете использовать вывод lsof
, чтобы проверить, полностью ли записан файл.
Вы можете запустить команду lsof
из Java, используя Process
/ ProcessBuilder
.