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
Partager