2010-02-22 5 views
0

Je souhaite lire plusieurs objets (ma propre classe Term) que j'ai générés dans un fichier .dat, mais j'ai toujours une exception nullPointException ou EOFException.EOFexception en Java lors de la lecture de 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

Si vous obtenez une exception EOFException, c'est probablement parce que vous avez atteint la fin du fichier. –

+0

oui, je suppose qu'il atteint la fin du fichier. – user276712

+1

J'ai essayé ceci et je reçois seulement EOFException. Dans quelles circonstances obtenez-vous NullPointerException? – lins314159

Répondre

5

Voir la Javadoc. readObject() ne retourne pas null à EOF. Il lance EOFException. La seule façon de renvoyer une valeur nulle est si vous avez écrit une valeur nulle à l'autre extrémité, et ce n'est pas nécessairement une bonne raison pour terminer la boucle de lecture.

En bref, votre code est erroné. NB: l'initialisation de 'o' est redondante.

NB (2) Le code que vous avez posté ne peut pas lancer NullPointerException, sauf si masterFile est null. Est-ce un rapport sérieux ou juste une supposition?

+0

Comment résoudre le problème 'EOFException'? Dois-je envelopper le code dans un bloc 'try/catch' et attendre que l'exception apparaisse> –

+0

Ce n'est pas un 'problème', c'est une exception. Attrape ça. – EJP

Questions connexes