bonjour,
j'ai un Vector contenant uniquement des String
je souhaite enregistrer ces String dans un fichier pour ensuite les relire.
Problème: je ne peux relire que la 1ere série de String enregistées
exemple: j'écris "toto", "tutu"
je ferme l'application
je redémarre (je peux lire sans problème "toto" "tutu"), j'écris "titi"
si je relis mes String j'obtiens "toto" "tutu" puis l'erreur (lors du readObject():
java.io.StreamCorruptedException
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1301)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:324)
at gestionmas.stratus.AffiTrace6500.lectureSur6500(AffiTrace6500.java:147)
at gestionmas.stratus.AffiTrace6500.<init>(AffiTrace6500.java:26)
at gestionmas.menu.JGMenu.actionPerformed(JGMenu.java:139)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1786)
at javax.swing.AbstractButton$ForwardActionEvents.actionPerformed(AbstractButton.java:1839)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:420)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:258)
at javax.swing.AbstractButton.doClick(AbstractButton.java:289)
at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:1113)
at javax.swing.plaf.basic.BasicMenuItemUI$MouseInputHandler.mouseReleased(BasicMenuItemUI.java:943)
at java.awt.Component.processMouseEvent(Component.java:5100)
at java.awt.Component.processEvent(Component.java:4897)
at java.awt.Container.processEvent(Container.java:1569)
at java.awt.Component.dispatchEventImpl(Component.java:3615)
at java.awt.Container.dispatchEventImpl(Container.java:1627)
at java.awt.Component.dispatchEvent(Component.java:3477)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:3483)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3198)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3128)
at java.awt.Container.dispatchEventImpl(Container.java:1613)
at java.awt.Window.dispatchEventImpl(Window.java:1606)
at java.awt.Component.dispatchEvent(Component.java:3477)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:456)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:145)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:137)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:100)
voici mon code (simplifié):
public void sauvegarde(Vector v) {
try{
FileOutputStream fos = new FileOutputStream("file.ser", true);
ObjectOutputStream oos = new ObjectOutputStream(fos);
Enumeration en = w.elements();
while(en.hasMoreElements())
{
oos.writeObject(en.nextElement());
oos.flush();
}
oos.close();
fos.flush();
fos.close();
} catch(Exception e) { System.out.println("ERREUR StratusEchangesFtp.sauvegardeSur6500()"); e.printStackTrace();}
}
public Vector lecture() {
try {
FileInputStream fis = new FileInputStream("file.ser");
ObjectInputStream ois = new ObjectInputStream(fis);
} catch(...) {...}
Vector traces = new Vector();
while(true) {
try { traces.addElement(ois.readObject()); }
catch(EOFException eofex) { ... break; }
catch(ClassNotFoundException cnfex) { ... break; }
catch(IOException ioex) { ... break; }
catch(Exception e) { ... break; }
}
try {
ois.close();
fis.close();
} catch(...) {...}
return((Vector)traces.clone());
}
}
merci de votre aide
jerome