Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : writeObject readObject [ Archives / Au secours ] (jguillemette)

mercredi 2 février 2005 à 11:06:32 | writeObject readObject

jguillemette

Membre Club

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


mercredi 2 février 2005 à 14:17:18 | Re : writeObject readObject

nizaration

saaalut;
tu peut enregistrer le vecteur entier puis tu le recupère avec un casting .
==> ecriture : oos.writeObject(v);
==> lecture : Vector v=(Vector)
oos.readObject();
c plus facile à manipuler !!!


mercredi 2 février 2005 à 14:37:27 | Re : writeObject readObject

jguillemette

Membre Club
j'ai peur d'avoir mal compris le role du writeObject: cette methode est-elle censée ajouter un nouvel "Object" à la FIN des "Object" déjà présent dans le fichier ouvert par le FileOutputStream via un ObjectOutputStream?

jerome

mercredi 2 février 2005 à 19:43:09 | Re : writeObject readObject

jguillemette

Membre Club
visiblement, malgré le paramêtre append à 'true' dans le FileOutputStream, le writeObject ne se fait pas correctement à la fin du fichier (enfin c'est ce que j'en déduis), car pour m'en sortir, je relis maintenant d'abord toutes les String depuis le fichier et je les stocke dans un Vector (appel de la fonction lecture() ) puis j'ajoute à ce Vector les nouvelles String, enfin je sauvegarde le Vector final (qui contient donc les anciennes et les nouvelles String) avec un paramêtre append à false pour le FileOutputStream ce qui écrase tout ce qu'il y avait au paravant dans le fichier.
Cette solution est possible car je n'ai pas un nombre énorme de String par fichier (quelques centaines au maximum). Maintenant ça marche, mais je n'ai toujours pas compris pourquoi l'ancienne version ne fonctionnait pas et ça me désole, donc si quelqu'un peut éclairer ma lanterne...

jerome



Cette discussion est classé dans : java, awt, at, component, eventdispatchthread


Répondre à ce message

Sujets en rapport avec ce message

combobox [ par abalya_ya ] Bonjour, voilà,j'aimerais savoir pourquoi mon programme donne cette erreur qd je selectioner l'un du composant de mon ComboBox?? java.lang.ClassCastEx Missing or invalid characters in field [ par neena ] bonjour, j'ai un petit souci, jai un grid avec plusieurs champs (jusque là tout va bien), l'un de ces champs renferme une date (avec un cache de saisi elements List [ par didoux95 ] Bonjour a tous. j'utilise l'api JDom pour traiter le fichiers XML. pour supprimer un element, JDom n'a pas de mtehode particuliere, il suffit de cre RessourceBundle [ par metalkev64 ] Salut je souhaite utiliser un RessourceBundle pour mon application, alors j'ai suivie les conseils que j'ai trouver sur divers site web, et voila lors Systeme Expert!!!! [ par albatrossa ] bonjour a tous,voila je suis debutante en java, enfin pas debutante je n'y connait rien.mon prof a exigé JAVA pour faire un petit systeme expert avec application en netbeans... Partitions inaccessibles [ par maynoush ] salut tout le monde,bon voilà.. je suis actuellement en train de développer une application sur netbeans consistant en un premier temps d'ouvrir les r Erreur [ par samaxnet ] bonjour a tous, voila je debute en java en essayant de faire un editeur de texte qui ressemble a wordpad, mais j'ai quelque erreurs quand j'appel ma m Netbeans [ par juliox24 ] Bonjour,Voila le probleme, je suis sous NetBeans IDE 6.0 et lorsque je lance mon programme il me dit le message suivant :Exception in thread "AWT-Even Erreur lors d'une mise à jour dans une JTable [ par LpG18 ] Bonjour, je suis actuellement étudiant et je dois faire un projet comprenant des JTables. Je cherche déséspérement la solution mais je trouve pas !!!! Génération d'une matrice [ par crazysetup ] Bonjour à tous, je suis sous NetBeans 6.5 et je cherche à génerer une matrice(vide pr l'instant), son ordre sera récupéré sur deux jTextFields.Le prob


Nos sponsors

Sondage...

CalendriCode

Décembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,515 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.