enregister un objet dans un fichier - Java - Programmation
Marsh Posté le 04-01-2005 à 19:00:25
j'ai eu le souci récemment, j'ai trouvé ça comme explication (le dernier post)
http://groups.google.fr/groups?hl= [...] eb7&rnum=2
Marsh Posté le 04-01-2005 à 19:36:48
J'ai fait un test tout con pour sérialiser un objet contenant des références croisé comme une liste doublement chainé et effectivement cela lance un java.lang.StackOverflowError.
L'explication est donné dans le lien d'Harko
EDIT : J'ai raconté des conneries, mon stack overflow venait de mon implementation de la méthode toString
En fait la sérialisation se passe sans problême
Marsh Posté le 04-01-2005 à 19:47:11
essayez xstream à l'occasion: ça marche bien, c'est hyper simple, et le resultat est lisible
(et dites ce que ça donne sur vos gros objets qui overflowent le stack)
Marsh Posté le 04-01-2005 à 20:23:43
bah... pourquoi ?
Moi je sérailise à fond en ce moment, et j'me disais qu'un moyen simple d'enregistrer des objets, ce serait la classe
ça m'plait bien ce truc à moi..
Marsh Posté le 04-01-2005 à 20:25:51
ReplyMarsh Posté le 05-01-2005 à 11:57:08
non c'est pour ça que je l'ai conseillé
Marsh Posté le 05-01-2005 à 14:45:27
jai voulu tester XSTREAM qui a l'air pas mal du tout, seulement il semblerait que ca ne marche pas avec un Applet, ca genere un "AccessControlException: access denied"
si quelqu'un a reussi a faire marcher la librairie avec un applet. ca m'interresse..
Marsh Posté le 05-01-2005 à 14:54:31
la question à été soulevée y'a pas lgtps sur la mailing list, va jeter un oeil aux archives
http://archive.xstream.codehaus.org/user/
Marsh Posté le 05-01-2005 à 19:25:36
the real moins moins a écrit : private joke, pas grave |
d'accord, ça me rassure merci pour la découverte en tous cas
(nraynaud je l'ai vu dire pas mal de trucs constructifs alors c'est vrai, je pense pas tout de suite à une blague)
Marsh Posté le 05-01-2005 à 19:35:43
raytaller a écrit : (nraynaud je l'ai vu dire pas mal de trucs constructifs alors c'est vrai, je pense pas tout de suite à une blague) |
tu couperas ça avant "alors" pendant le montage coco !
Marsh Posté le 05-01-2005 à 20:00:33
nraynaud a écrit : tu couperas ça avant "tructifs" pendant le montage coco ! |
Marsh Posté le 08-01-2005 à 14:14:37
une question qui est peut etre bete. on peut sauver plusieurs objets, de meme type bien sur, dans un meme fichier ?
Marsh Posté le 08-01-2005 à 14:15:55
ReplyMarsh Posté le 08-01-2005 à 14:37:20
benou a écrit : oui, même si ils sont pas de même type ... |
Ma sauvegarde a l'air de bien fonctionner, maintenant je regarde comment recuperer l'ensemble de mes objets qui sont dans mon fichier. Car pour en recuperer un, ca a l'air simple, mais plusieurs
Marsh Posté le 08-01-2005 à 14:41:57
benou a écrit : while |
Code :
|
intercaler un while avec un eof ?
operation c'est un objet à moi (je sais que le nom n'est pas génial )
Marsh Posté le 08-01-2005 à 14:44:37
ReplyMarsh Posté le 08-01-2005 à 14:47:42
benou a écrit : while (in.available() != 0) |
Code :
|
je vais tester ca
Marsh Posté le 08-01-2005 à 14:55:41
nan mais là non ... c'est l'inputstream qu'il faut tester avec available ... et le premier read faut le mettre dans la boucle aussi ...
Marsh Posté le 08-01-2005 à 15:02:56
oups
Code :
|
Faut encore que je catch cette exception
Citation : unreported exception java.lang.ClassNotFoundException; must be caught or declared to be thrown |
sur le
Code :
|
je garde espoir
Marsh Posté le 08-01-2005 à 15:06:23
Code :
|
je teste et croise les doigts car j'aurais presque fini
Marsh Posté le 08-01-2005 à 15:28:42
Ca commence mal...
Il ne passe déjà pas la boucle
while (flotLecture.available() != 0)
Marsh Posté le 08-01-2005 à 15:56:42
c'est vraiment pas beau ce que je viens de faire, mais ca fonctionne, j'ai fait un while(1==1) donc ca lit, et car ca plante, ca appele l'execption et sort de la boucle. c'est immonde, mais ca fonctionne
Marsh Posté le 08-01-2005 à 16:10:15
while(true) tant qu'à faire ...
c'est quoi le problème avec available ? c'est quoi le message d'erreur ?
Marsh Posté le 08-01-2005 à 16:12:39
il ne fait pas de msg d'erreur avec available, il ne passe meme pas dans la boucle. Ce qui voudrait dire que flotLecture.available() == 0, ce qui me semble bizarre
quoique
Citation : public int available() |
qu'est ce que veut dire blocking....
Marsh Posté le 08-01-2005 à 16:43:40
peut être que c'est juste utilisable pour les stream avec buffer
dans ce cas, je vois pas d'autre solution que de catcher EOFException pour savoir quand le flux est fini
Marsh Posté le 08-01-2005 à 16:53:06
ben si, mettre le nombre d'objet de début de fichier, genre un Integer, et hop
Marsh Posté le 08-01-2005 à 17:23:04
oui c'est moins sale, mais bon, pas génial non plus enfin comme ca c'est bon, je barratinerais le prof sur le sujet
merci pour votre aide
Marsh Posté le 04-01-2005 à 18:55:47
Bonjour, je souhaite pouvoir enregistrer un objet grace à la serialisation.
voila mon code :
public void save(File f){
try {
FileOutputStream fichier = new FileOutputStream(f);
ObjectOutputStream oos = new ObjectOutputStream(fichier);
oos.writeObject(this);
oos.flush();
oos.close();
}
catch (java.io.IOException e) {
e.printStackTrace();
}
}
ce code fonctionne trés bien pour des petits objets, mais qd je l'utilise sur un autre objet, l'erreur satckoverflow est levée !
Est ce que ceci pourrait venir d'une faite que je veut serialiser un objet1, qui contient un objet2, et que cette objet2 à un pointeur vers l'objet1 ??
Merci de votre aide