ObjectInputStream jette EOFException

Je suis en train d'écrire une classe pour garder une trace de la concurrence de données lors d'un tournoi. Je veux stocker cette classe dans un fichier, je le suis aussi à l'aide d'un ObjectInputStream. La classe je suis en train d'écrire implémente Serializable. Je suis un EOFException, et aucune des solutions que j'ai trouvé sur DONC et d'ailleurs réellement répondre à cette question.

Mon fichier écrivain est:

public void writeToFile(String path) {
    File f = new File(path);
    if(f.exists()) f.delete();

    try {
        OutputStream fileOut = new FileOutputStream(path);
        OutputStream bufferOut = new BufferedOutputStream(fileOut);
        ObjectOutput output = new ObjectOutputStream(bufferOut);

        output.writeObject(this);
    } catch(IOException e) {}
}

Mon lecteur de fichier est:

public static DivisionDataFTC readFromFile(String path) {
try {
InputStream fileIn = new FileInputStream(path);
InputStream bufferIn = new BufferedInputStream(fileIn);
ObjectInput input = new ObjectInputStream(bufferIn);
System.out.println(input.read());
} catch(Exception e) {
System.out.println(path);
e.printStackTrace();
}
if(1==1) throw new Error("Could not read DivisionDataFTC at " + path);
return null;
}

J'écris les données avec succès - j'ai vérifié que le fichier est pas vide. (Son contenu, le cas échéant, sont régulièrement 7.99 ko).

Pour être clair, l'erreur ne se produit pas sur l'instanciation de la ObjectOutputStream. C'est ce qui rend cette question est-elle différente - l'erreur se produit sur les méthodes readObject() de l'appel. Mon résultat est remarquablement EOFException:

java.io.EOFException
at java.io.ObjectInputStream$BlockDataInputStream.peekByte(ObjectInputStream.java:2571)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1315)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:369)
at java.util.ArrayList.readObject(ArrayList.java:733)
(...cut out most of this because nobody wants to read it...)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:369)
at tournamentftc.DivisionDataFTC.readFromFile(DivisionDataFTC.java:297)
at firstscouting.FIRSTScouting.runGUI(FIRSTScouting.java:82)
at firstscouting.FIRSTScouting.main(FIRSTScouting.java:101)
Exception in thread "main" java.lang.Error: Could not read DivisionDataFTC at C:\Users\Noah\Desktop\out.ser
at tournamentftc.DivisionDataFTC.readFromFile(DivisionDataFTC.java:303)
at firstscouting.FIRSTScouting.runGUI(FIRSTScouting.java:82)
at firstscouting.FIRSTScouting.main(FIRSTScouting.java:101)

Je ne suis pas sûr de savoir pourquoi cela se passe. Comment puis-je gérer cela?

OriginalL'auteur Aza | 2013-03-02