Sto cercando di leggere alcuni oggetti da un file. Il codice funziona bene per la prima iterazione e alla seconda iterazione fornisce una StreamCorruptedException. Ecco il mio codice,java.io.StreamCorruptedException: codice di tipo non valido: AC
private ArrayList<Cheque> cheques = null;
ObjectInputStream ois = null;
try {
cheques = new ArrayList<Cheque>(4);
ois = new ObjectInputStream(new FileInputStream("src\\easycheque\\data\\Templates.dat"));
Object o = null;
try {
o = ois.readObject();
int i=1;
while (o != null) {
cheques.add((Cheque) o);
System.out.println(i++); // prints the number of the iteration
o = ois.readObject(); // exception occurs here
}
} catch (ClassNotFoundException ex) {// for ois readObject()
Logger.getLogger(TemplateReader.class.getName()).log(Level.SEVERE, null, ex);
} catch (EOFException ex) {// for ois readObject()
// end of the file reached stop reading
System.out.println("ois closed");
ois.close();
}
} catch (IOException ex) {
Logger.getLogger(TemplateReader.class.getName()).log(Level.SEVERE, null, ex);
}
di seguito fa parte dell'eccezione. Prima di stampare questo '1' è stampata (a causa del Sout)
SEVERE: null
java.io.StreamCorruptedException: invalid type code: AC
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1356)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:351)
io non riesco a capire perché questo sta accadendo. In alcuni post del forum mi sono imbattuto in ciò che accade quando si aggiunge a un file durante la scrittura. È la vera ragione? (Sto accodando al file durante la fase di scrittura). Se è così esiste un modo corretto di leggere un file aggiunto?
Ecco il codice che uso per scrivere sul file
ObjectOutputStream objectOut = new ObjectOutputStream(new FileOutputStream("src\\easycheque\\data\\templates.dat", true));
objectOut.writeObject(cheque);
objectOut.flush();
objectOut.close();
scrittura non è un processo iterativo.
Grazie :)
Vuoi essere in grado di aggiungere un frammento di esempio di scrittura per il file come bene? –
La dimensione dell'oggetto può essere una questione? Ogni oggetto che sto scrivendo ha un oggetto immagine (Icona) – Niroshan
Non è corretto eseguire il ciclo finché 'readObject()' non restituisce nulla. Non lo fa alla fine del flusso, e può farlo in qualsiasi altro momento in cui hai scritto un null. È necessario eseguire il ciclo fino a quando non viene generata l'eccezione EOFException. – EJP