2010-02-22 4 views
0

Я хочу прочитать несколько объектов (мой собственный класс Term), которые я выводил в файл .dat, но всегда получаю исключение nullPointException или исключение EOFException.EOFexception в Java при чтении objectinputstream

ObjectInputStream inputStream = new ObjectInputStream(new FileInputStream(masterFile)); 
     Object o = null; 
     while((o = inputStream.readObject()) != null){ 
      Term t = (Term)o; 
      System.out.println("I found a term"); 
     } 
+0

Если вы получаете исключение EOFException, это, вероятно, потому, что вы достигли конца файла. –

+0

Да, я предполагаю, что он доходит до конца файла. – user276712

+1

Я пробовал это, и я только получаю EOFException. При каких обстоятельствах вы получаете NullPointerException? – lins314159

ответ

5

См. Javadoc. readObject() не возвращает null в EOF. Он выбрасывает EOFException. Единственный способ вернуть нуль - это если вы написали нуль на другом конце, и это не обязательно является хорошей причиной для завершения цикла чтения.

Вкратце, ваш код является неправильным.

NB инициализация «o» является избыточной.

NB (2) Код, который вы опубликовали, не может выбрасывать NullPointerException,, если masterFile не имеет значения. Это серьезный доклад или просто догадка?

+0

Как вы решаете проблему 'EOFException'? Должен ли я обернуть код в блок 'try/catch' и дождаться появления исключения? –

+0

Это не проблема, это исключение. Лови. – EJP