Процесс-A записывает байты в файл данных с использованием FileOutputStream. Process-B считывает из того же файла данных, используя DataInputStream.EOFException при взаимодействии между процессами на основе файлов
Данные-файл находится на горе NFS, которая не поддерживает FileLocks так используется следующий подход:
Process-A создает файл блокировки, чтобы сообщить Process-B, что он может начать чтение файла данных. Он создает файл блокировки после того, как он сбрасывает и закрывает FileOutputStream. Process-B проверяет наличие файла блокировки и затем начинает чтение файла данных. Однако иногда он сталкивается с EOFException.
java.io.EOFException
at java.io.DataInputStream.readFully(DataInputStream.java:180)
at java.io.DataInputStream.readUTF(DataInputStream.java:592)
at java.io.DataInputStream.readUTF(DataInputStream.java:547)
java.io.EOFException
at java.io.DataInputStream.readInt(DataInputStream.java:375)
at java.io.DataInputStream.readFloat(DataInputStream.java:429)
Может кто-нибудь объяснить, что происходит не так? Кроме того, есть ли другой альтернативный подход, учитывая, что я не могу использовать FileLock api?
Возможно, вы можете показать код, который вы используете для записи и чтения из этих потоков? –
Я не вставлял какой-либо код, потому что его стандартный код ввода/вывода файлов с использованием fileoutputstream и datainputstream ничем не отличается от обычного. Выполняется только в двух разных процессах. –
Возможный дубликат [EOFException - как обращаться?] (Http://stackoverflow.com/questions/18451232/eofexception-how-to-handle) – Raedwald