Я пытаюсь прочитать некоторые объекты из файла. Код работает отлично для первой итерации, а на второй итерации он дает исключение StreamCorruptedException. Вот мой код,
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);
}
ниже является частью исключения. Перед печатью это '1' печатается (из-за 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)
Я не могу понять, почему это происходит. В нескольких сообщениях на форуме я сталкивался с тем, что это происходит, когда вы добавляете файл во время его написания. Это настоящая причина?. (Я добавляю файл во время записи). Если есть подходящий способ для чтения прилагаемого файла?
вот код, который я использую для записи в файл
ObjectOutputStream objectOut = new ObjectOutputStream(new FileOutputStream("src\\easycheque\\data\\templates.dat", true));
objectOut.writeObject(cheque);
objectOut.flush();
objectOut.close();
запись не является итерационным процессом.
Спасибо:)