[java] Enregistrer un vecteur dans un fichier et le recupérer

Enregistrer un vecteur dans un fichier et le recupérer [java] - Programmation

Marsh Posté le 27-06-2002 à 12:28:52    

Bonjour,
 
comment on fait pour enregistrer un vecteur dans un fichier et ensuite pouvoir le relire ?
 
la serialisation ca marche pour ca ??
 
si vous aviez un ptit exemple de code ;)
 
merci
David

Reply

Marsh Posté le 27-06-2002 à 12:28:52   

Reply

Marsh Posté le 27-06-2002 à 13:16:19    

Bah, le problème de la sérialisation, c'est l'évolution des versions de Java : un vecteur sauvé dans un fichier grâce à la sérialisation avec une JRE 1.2.x ne sera pas forcément récupéré correctement par une JRE 1.3.X....
 
Tu as quoi, dans ton vecteur?? Parce c'est assez simple à refaire...

Reply

Marsh Posté le 27-06-2002 à 13:36:14    

Ba hau debut, je voulais le faire moi mm, mais le pb, c que j'ai des objets de types entité (que j'ai créé) et je sais pas comment les sauvergarder en texte. C'est pour ca, si yavait moyen de mettre directement le vecteur, et de recuperer le vecteur, trop simple.
 
Pour les versions, c pas super important, j'ai le 1.4 et je pense pas que ca evolue.
David

Reply

Marsh Posté le 27-06-2002 à 13:39:21    

bin si tu as fait des objets toi meme il doivent étendre java.io.Serializable déjà ...
 
Ensuite tu peux utiliser la sérialisation si l'entité qui sauve et qui charge est la même


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 28-06-2002 à 11:50:25    

Ca marche bien, seul petit pb, comment je sais que j'arrive a la fin du fichier ?

Code :
  1. FileInputStream lecture = new FileInputStream("Europe.xxx" );
  2. ObjectInputStream p = new ObjectInputStream(lecture);
  3. while(true) {
  4. lue = (Entite) p.readObject();
  5. System.out.println("Nom : " + lue.nom);
  6. }


 
ce code leve une exception

Reply

Marsh Posté le 28-06-2002 à 12:04:40    

Code :
  1. FileInputStream lecture = new FileInputStream("Europe.xxx" );
  2. ObjectInputStream p = new ObjectInputStream(lecture);
  3. lue = (Entite) p.readObject();
  4. while(lue != null) {
  5.     System.out.println("Nom : " + lue.nom);
  6.     lue = (Entite) p.readObject();
  7. }


Message édité par El Scorcho le 28-06-2002 à 12:05:10
Reply

Marsh Posté le 28-06-2002 à 12:58:00    

ca compile pas, lue n'est peut etre pas initialisé, alors, j'ai fais un do {...} while, mais il leve qd mm l'exception :((

Reply

Marsh Posté le 28-06-2002 à 13:13:17    

Desch3 a écrit a écrit :

ca compile pas, lue n'est peut etre pas initialisé, alors, j'ai fais un do {...} while, mais il leve qd mm l'exception :((




 
oui enfin j'avais supposé que tu avais déclaré "lue" avant.
et si tu fais un do {..} while ça peut planter si le premier élément est égal à null (il faut tester à null avant chaque affichage).
et si tu nous disais quelle est l'exception levée ce serait 'achement cool...  ;)

Reply

Marsh Posté le 28-06-2002 à 13:17:11    

C declaré avant en Entite lue;
 
l'exception est EOFException

Reply

Marsh Posté le 28-06-2002 à 13:58:09    

Desch3 a écrit a écrit :

C declaré avant en Entite lue;
 
l'exception est EOFException




 
J'ai testé et ça me fait la même chose. En fait j'avais jamais utilisé de ObjectInputStream mais je pensais qu'on pouvait procéder de la même façon qu'avec un BufferedReader pour tester la fin de fichier. Donc apparemment il faut faire un try, catch sur EOFException pour savoir si t'es au bout... Enfin y'a peut-être un autre moyen mais alors je le connais pas.

Reply

Marsh Posté le 28-06-2002 à 13:58:09   

Reply

Marsh Posté le 28-06-2002 à 14:07:22    

encore que si tu mets qu'un objet dans le fichier y a pas trop besoin de s'emmerder ...

Reply

Marsh Posté le 28-06-2002 à 14:56:41    

ouais, si ya qu'un objet, mais la yen a x :)
 
ca serait trop facile sinon. Pour le moment, j'ai traité EOFException pour qu'il fasse rien. C sur que c pas la top, mais bon, je voulais tester le reste pour voir si ca marchait.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed