Загадочное исключение EOF при чтении файла с функциями Java IO - PullRequest
2 голосов
/ 20 января 2009

Я получаю следующее исключение, когда пытаюсь найти какой-нибудь файл.

> Ошибка при поиске 38128 в myFile, длина файла: 85742 java.io.EOFException at java.io.RandomAccessFile.readInt (RandomAccessFile.java:725) at java.io.RandomAccessFile.readLong (RandomAccessFile.java:758) >

Но если вы видите, я пытаюсь найти «38128», где в качестве длины файла «85742». Сообщается об исключении EOF. Интересно, как это возможно? Другой процесс периодически добавляет содержимое в этот файл и закрывает обработчик файла. Он добавляет содержимое, используя DataOutputStream. Мой процесс пытается найти некоторые места и читать их. Еще одна вещь, я получил это исключение только один раз. Я пытался воспроизвести это, но это никогда не повторялось. Файл находится только на локальном диске. Нет файла.

Спасибо Д. Л. Кумар

Ответы [ 2 ]

2 голосов
/ 20 января 2009

Я был бы очень осторожен при попытке сделать произвольный доступ к файлу, который одновременно записывается из другого процесса. Это может привести к всевозможным странным проблемам синхронизации, которые вы испытываете сейчас.

Определяете ли вы длину файла из того же процесса, что и тот, который выполняет поиск ()? Выполнена ли другая модифицирующая обработка flush ()?

1 голос
/ 20 января 2009

Процессу записи данных, возможно, было приказано записать данные, но данные могут быть помещены в буфер для записи. Обязательно вызовите flush () для выходного потока перед попыткой чтения данных.

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