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

Langage Java Discussion :

problème de sérialisation


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 7
    Par défaut problème de sérialisation
    Bonjour,

    Voilà je soumet un petit problème auquel je suis confronté, j'avoue ne pas très bien comprendre ce qui se passe:

    Je travaille sur un petit programme java qui applique certains algorithmes sur des graphes. Mon objectif d'amélioration est d'éviter la saisie des graphes au clavier, et de permettre d'enregistrer ces graphes dans des fichiers pour ensuite pouvoir les recharger et donc appliquer directement les algorithmes sur les fichiers graphes.

    J'ai donc décidé d'utiliser la sérialisation.

    Seulement j'ai un problème que je ne comprends pas : après avoir terminé la saisie de mon graphe et que je propose de l'enregistrer dans un fichier, je fais
    un ecrire=new ObjectOutputStream puis ensuite un writeobject sur mon graphe g, modifié au cours de mon programme, donc ecrire.writeObject(g) tout simplement. La sauvegarde semble fonctionner normalement ! Par ailleurs avant de sauvegarder j'ai fait un g.affiche() pour voir mon graphe et pas de problème c'est bien le bon avant la création du fichier, je suis donc censé bien créer un fichier correspondant à ce graphe !

    Mais lorsque je réexécute mon programme, que je cherche à charger mon fichier, j'arrive bien à le charger, mais si ensuite je fais un affichage: et bien je me rend compte que mon graphe n'a qu'un seul sommet !

    J'implémente mes graphes ainsi: une classe graphe principale, et deux classes qui extends ma classe graphe pour implémenter sous forme de listes ou de matrice. La classe graphe est abstract, et le fichier que je semble charger est un fichier qui semble similaire à si j'avais fait un new grapheMatrice(0) ou un new grapheListes(0).

    Par ailleurs si je teste mon fichier chargé dans le programme de la façon suivante: ObjectInputStream puis g =(Graphe)lecteur.readObject(), et bien il fait bien la distinction si mon graphe précédemment crée est issu d'une implémentation par les listes ou les matrices.

    Bref j'avoue être perdu, peut-être que la sérialisation se fait autrement, mais j'ai vraiment suivi toutes les documentations.

    Petite précision, je n'oublie pas les implements Serializable !

    Merci de votre aide

    yoyo

  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
    Peux-tu donner ton code, sinon il nous sera difficile de t'aider.
    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 du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 7
    Par défaut
    Voici les bouts de code que je fais pour la sérialisation:

    Pour écrire dans un fichier je fais:

    ObjectOutputStream ecrivain;
    ecrivain = new ObjectOutputStream(new BufferedOutputStream(new FileOutputStream(fichier)));
    g.affiche();
    ecrivain.writeObject(g);
    out.println(fichier + " sauvegarde !");
    ecrivain.close();

    Mon g.affiche() me montre mon graphe avant de le sauvegarder. Et c'est bien le bon donc la sauvegarde devrait bien fonctionner !

    Puis pour lire dans un fichier:

    ObjectInputStream lecteur;
    lecteur = new ObjectInputStream(new BufferedInputStream(new FileInputStream(fichier)));
    g =(Graphe)lecteur.readObject();
    g.affiche();
    lecteur.close();

    Et là je me retrouve avec un nouveau graphe g qui ne contient qu'un seul sommet, donc pas du tout le même que celui normalement sauvegardé !

    Je comprend vraiment pas

    merci de votre aide

  4. #4
    Membre Expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Par défaut
    Et le code de Graphe ?

    Et sans mettre de Buffered... intermédiaires?

  5. #5
    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
    Peut-être as tu des attributs static (qui ne sont pas sérialiser par défaut cf ce tutoriel sur la sérialisation binaire).
    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

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 7
    Par défaut
    ok merci, j'ai effectivement des attributs static, le problème pourrait bien venir de là, je vais éplucher ce point.

    Merci !

Discussions similaires

  1. [Tableaux] problème de sérialisation
    Par mikebranque dans le forum Langage
    Réponses: 4
    Dernier message: 17/02/2007, 19h52
  2. [Tableaux] Problème de sérialisation
    Par Langly dans le forum Langage
    Réponses: 1
    Dernier message: 29/12/2006, 20h22
  3. [Débutant] Problème de sérialisation collection
    Par Michel Hubert dans le forum VC++ .NET
    Réponses: 1
    Dernier message: 21/12/2006, 15h17
  4. Réponses: 4
    Dernier message: 12/12/2006, 10h22
  5. Problème de sérialisation
    Par CheryBen dans le forum Entrée/Sortie
    Réponses: 18
    Dernier message: 15/09/2005, 11h55

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