Этот код бросает java.io.EOFException, и я не уверен, почему это происходит.
Содержимое входного файла:
После -1 нет обратного символа строки.
Результат совершенно неожиданно, и я предполагаю, что исключение выбрасывается, потому что по какой-то причине значение суммы велико, чем максимальное значение int.
Я попытался изменить «int sum = 0» на «long sum = 0» и получил те же результаты.
Я прокомментировал следующее:
После этого я получил следующее исключение:
Если это помогает, я использую Ubuntu 18.04 LTS.
java version «1.8.0_181» Java (TM) SE Runtime Environment (сборка 1.8.0_181-b13) 64-разрядная серверная виртуальная машина Java HotSpot TM (сборка 25.181-b13, смешанный режим)
Я начинающий Java-программист, следуя java tutorials.
Я использую простую программу Java из учебных пособий Java Потоки данных Страница, и во время выполнения он продолжает показывать EOFException . Мне было интересно, нормально ли это, так как читатель должен в конце концов прийти к концу файла.
Он компилируется отлично, но вывод:
Обратите внимание, что DataStreams обнаруживает условие конца файла, перехватывая EOFException вместо проверки на недопустимое возвращаемое значение. Все реализации методов DataInput используют EOFException вместо возвращаемых значений.
Итак, означает ли это, что catching EOFException является нормальным, поэтому просто поймать его и не обрабатывать, это хорошо, что означает, что конец файла достигнут?
Если это означает, что я должен это обработать, пожалуйста, сообщите мне, как это сделать.
ИЗМЕНИТЬ
Из предложений я исправил его, используя in.available() > 0 для условия цикла while .
Или я не мог ничего сделать, чтобы обрабатывать исключение, потому что это нормально.
Я хочу прочитать файл и если там email существует — ничего не делать, а если не существует — записать email в файл.
Содержание
- 2 ответа 2
- Всё ещё ищете ответ? Посмотрите другие вопросы с метками java файлы или задайте свой вопрос.
- Похожие
2 ответа 2
Попробуйте добавить проверку в while
Во-первых, метод readObject не возвращает null в конце файла. Он выбрасывает исключение EOFException , когда достигнут конец файла. Ловите данное исключение и обрабатывайте его необходимым образом.
Во-вторых, вот здесь while ((email = (Email) objectInputStream.readObject()) == null || (email = (Email) objectInputStream.readObject()) != null) Вы выполняете что-то не совсем понятное. Как минимум, вы дважды вызываете метод readObject , читаете сразу два объекта из файла, переопределяете email и, как следствие, после обрабатываете лишь второй объект, теряя первый.
Всё ещё ищете ответ? Посмотрите другие вопросы с метками java файлы или задайте свой вопрос.
Похожие
Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.
дизайн сайта / логотип © 2019 Stack Exchange Inc; пользовательское содержимое попадает под действие лицензии cc by-sa 4.0 с указанием ссылки на источник. rev 2019.11.15.35459
Источник: