Нет, canWrite не подходит для этой цели. В общем случае файл будет доступен для записи, даже если пишет другой процесс.
Вам нужен протокол более высокого уровня для координации блокировки. Если вы планируете использовать этот код на одной платформе, вы можете использовать FileLock NIO . Но внимательно прочитайте документацию и обратите внимание, что на многих платформах блокировка носит рекомендательный характер.
Другой подход состоит в том, чтобы один процесс записал файл с именем, которое ваш процесс не распознает, а затем переименовал файл в узнаваемое имя, когда запись будет завершена. На большинстве платформ операция переименования является атомарной, если источником и местом назначения является один и тот же том файловой системы. Для изменения имени может использоваться другое расширение файла или даже перемещение файла из одного каталога в другой (на том же томе).
Так как в этом случае вы работаете исключительно с XML, поиск близкого тега будет работать, но он не является надежным & mdash; что, если после последней разметки есть комментарии, или автор пишет или просто не пишет корректный XML
Поиск EOF не будет работать. Всегда будет EOF, даже если автор только что открыл файл и еще ничего не написал. Если бы это было не так, проще всего было бы позволить читателю начать синтаксический анализ, как только файл обнаружился; это просто заблокировало бы, пока автор не закрыл файл. Но файловая система не работает таким образом. Каждый файл имеет конец, даже если какой-то процесс в данный момент перемещает его.