begin process at 2010 02 10 00:45:55
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive Java

 > 

Archives

 > 

Au secours

 > 

writeObject readObject


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

writeObject readObject

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ée 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 Modifier heure système [ par asetti ] Bonjour, Je voudrais modifier l'heure système dans une appli java.Après recherche, il s'avère que java ne comprend pas de fonction pour cela.Comme mon connexion à une base sql server avec java [ par elvira88 ] Salut, je veux réaliser une application en java dans le cadre de mon stage, mais j'ai un problème, je n'ai jamais utiliser sql server, j'ai écris un c segmentation par croissance de région [ par salhiamina ] Salut tous le monde j'ai un petit souci avec mon bout de code. j'essaie d'écrire le code java pour segmenter une image avec l'approche croissance de r 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...

Comparez les prix


HTC Hero

Entre 550€ et 550€

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), 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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,593 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales