Java - Как читать и писать файл одновременно? - PullRequest
2 голосов
/ 27 июля 2011

Есть ли способ в java прочитать содержимое файла, который обновляется другим обработчиком перед его закрытием?

Ответы [ 2 ]

4 голосов
/ 27 июля 2011

Это зависит от операционных систем.

Традиционно, операционные системы POSIX-y (Linux, Solaris, ...) не имеют абсолютно никаких проблем с открытием файла для чтения и записи даже отдельными процессами (они даже поддерживают удаление файла, пока он читается из и / или написано).

В Windows более распространенный подход - открывать файлы исключительно (вопреки распространенному мнению, Windows поддерживает неэксклюзивный доступ к файлам, он редко используется приложениями).

Java не может * указать, каким образом вы хотите получить доступ к файлу, поэтому используется платформа по умолчанию (общий доступ в Linux / Solaris, эксклюзивный доступ в Windows).

* Это может быть неправильно для NIO и нового NIO в Java 7, но я не большой эксперт по NIO.

2 голосов
/ 27 июля 2011

Теоретически это довольно легко сделать, однако файлы не предназначены для обмена данными таким образом, и в зависимости от ваших требований это может быть довольно сложно сделать правильно. Вот почему нет общего решения для этого.

например. если вы хотите прочитать файл, когда другой процесс записывает в него, поток чтения увидит EOF, даже если средство записи еще не завершено. Вы должны заново открыть файл и перейти к месту последнего чтения файла и продолжить. Записывающий поток может свернуть файлы, которые он пишет, что означает, что чтение должно обнаружить это и обработать.

Какую специфику вы хотите сделать?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...