Это хорошая практика - использовать исключение EOF для обнаружения конца файла - PullRequest
2 голосов
/ 29 июня 2011

Я читаю из ObjectInputStream и заранее не знаю количество объектов.Поэтому использование блока перехвата исключений EOF для обнаружения достигнутого конца файла и закрытия файла.

  • Это хорошая / безопасная практика программирования?

  • Если это не очень хороший подход, можно ли сделать это как-нибудь лучше?

Ответы [ 3 ]

1 голос
/ 30 июня 2011

У вас нет большого выбора. ObjectInputStream.readObject () генерирует EOFException, когда у вас закончились объекты. Если вы сами не избыточно кодируете EOS в потоке, вы должны перехватить EOFException.

1 голос
/ 29 июня 2011

Да, если вы читаете объекты в последовательном порядке (которые были записаны в последовательном порядке, например, o1, o2, o3) и в потоке нет абсолютно никакой другой информации.обойти это:

  • Записав список в файл, содержащий элементы, а затем заставить клиента прочитать один объект, список
  • Записав int в началеstream, который обозначает количество объектов, которое клиент может ожидать

Если вы отправляете поток объектов по сети, он становится немного проблематичным, но опять же, вам лучше использовать RMI, чемпытаясь закодировать его вручную.

0 голосов
/ 29 июня 2011

Будет ли для вас альтернативой метод available()?Можете ли вы полагаться на поток, не возвращающий ноль, доступный до EoF?

...