IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Entrée/Sortie Java Discussion :

serialization d'objets dans un fichier


Sujet :

Entrée/Sortie Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mars 2007
    Messages
    100
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Mars 2007
    Messages : 100
    Par défaut serialization d'objets dans un fichier
    Bonjour à tout le monde
    Mon problème c’est que je n’arrive pas à lire un fichier qui contient un ensemble d’objet que j’ai serializer dedans.
    La première lecture ce fait avec succès mais lorsque je tente a lire le suivant une erreur d’IOException s’affiche.

    Voici comment je fais pour lire un objet.
    Je refait la même chose pour lire le suivant.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
       FileInputStream Finp = null;
      ObjectInputStream Oinp = null;
      try {
        Finp = new FileInputStream(sauvegarde);
      }
      catch (FileNotFoundException ex) {
      }
     
      try {
        Oinp = new ObjectInputStream(Finp);
      }
      catch (IOException ex1) {
      }
     
     
     fiche fcurrent = null;
      try {
        fcurrent = (fiche) Oinp.readObject();
        System.out.println(fcurrent.GetID());
      }
      catch (ClassNotFoundException ex2) {
      }
      catch (IOException ex2) {
      }
    pour serializer un objet je fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    public void savefiche(fiche f){
      FileOutputStream fr = null;
      ObjectOutputStream br=null;
     
      try {
        fr = new FileOutputStream(sauvegarde,true);
        br= new ObjectOutputStream(fr);
        br.writeObject(f);
     
      }
      catch (IOException ex) {
     
      }
     
      }

  2. #2
    Expert confirmé
    Avatar de le y@m's
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    2 636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2005
    Messages : 2 636
    Par défaut
    Si tu n'affiche pas la trace des exceptions tu auras du mal à découvrir la source de l'erreur. Rajoute un printStackTrace dans chaque bloc catch
    cf
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    catch(Exception ex) {
        ex.printStackTrace();
    }
    Tu devrais avoir un message d'erreur t'indiquant plus exactement ton erreur. Si tu ne parviens toujours pas à résoudre ton problème, poste le message d'erreur complet.
    Je ne répondrai à aucune question technique par MP.

    Pensez aux Tutoriels et aux FAQs avant de poster ;) (pour le java il y a aussi JavaSearch), n'oubliez pas non plus la fonction Rechercher.
    Enfin, quand une solution a été trouvée à votre problème
    pensez au tag :resolu:

    Cours Dvp : http://ydisanto.developpez.com
    Blog : http://yann-disanto.blogspot.com/
    Page perso : http://yann-disanto.fr

  3. #3
    Membre confirmé
    Inscrit en
    Mars 2007
    Messages
    100
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Mars 2007
    Messages : 100
    Par défaut
    OK j'ai ajouter la trace d'exception et voici l'erreur

    java.io.StreamCorruptedException

    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1301)

    at java.io.ObjectInputStream.readObject(ObjectInputStream.java:324)

    at call.Restore.restore(Restore.java:57)

    at call.Restore.main(Restore.java:85)

    ça vien de cette ligne.

    fcurrent = (fiche) Oinp.readObject();

    comme j'ai dis la lecture est réussi la première fois mais la 2nd non

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 15
    Par défaut
    Je pense que juste apres avoir fait l'affichage de ton getID() tu devrai fermer les flux
    finp et oinp comme ceci:

    finp.close();
    oinp.close();

  5. #5
    Membre confirmé
    Inscrit en
    Mars 2007
    Messages
    100
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Mars 2007
    Messages : 100
    Par défaut
    Citation Envoyé par Yan17
    Je pense que juste apres avoir fait l'affichage de ton getID() tu devrai fermer les flux
    finp et oinp comme ceci:

    finp.close();
    oinp.close();
    ça deviend plus pire voici le message d'erreur
    java.io.IOException: Bad file descriptor

    at java.io.FileInputStream.read(Native Method)

    at java.io.ObjectInputStream$PeekInputStream.peek(ObjectInputStream.java:2133)

    at java.io.ObjectInputStream$BlockDataInputStream.peek(ObjectInputStream.java:2423)

    at java.io.ObjectInputStream$BlockDataInputStream.peekByte(ObjectInputStream.java:2433)

    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1245)

    at java.io.ObjectInputStream.readObject(ObjectInputStream.java:324)

    at call.Restore.restore(Restore.java:59)


    Le problème peut être que dans un fichier nous devons serialiser un seul objet

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 15
    Par défaut
    Oui tu peut essailler de ne serialiser qu'un seul objet dans le fichier, juste pour voir. Perso j'ai toujours serialise uniquement un seul objet par fichier.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Ecrire un objet dans un fichier
    Par skeltryx dans le forum C#
    Réponses: 3
    Dernier message: 11/05/2007, 13h31
  2. Serialization d'objet dans un ByteBuffer
    Par ratakses dans le forum Entrée/Sortie
    Réponses: 14
    Dernier message: 20/04/2007, 20h03
  3. Ecrire un objet dans un fichier
    Par mikebranque dans le forum C++
    Réponses: 3
    Dernier message: 14/03/2006, 13h39
  4. [arbre] Sauvegarder un objet dans un fichier
    Par Guigui_ dans le forum Langage
    Réponses: 6
    Dernier message: 07/02/2003, 00h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo