[Java] serialisation!

Bonjour,
J'aurai aimé savoir si La sérialisation permet de sauvegarder seulement "UN" objet a la fois dans un fichier et de le récupérer, ou est ce que c'est possible de sauvgaerder plusieurs objets d'une meme classe grace a cette methode .

Pour un seul objet j'utilise une méthode du genre :

ex:
Person p = new Person();
// Avec tous les déclarations préalable

static void SavePerson(Person p,String personne) throws IOException {
ObjectOutputStream objstream = new ObjectOutputStream(new FileOutputStream(personne));
objstream.writeObject(p);
objstream.close();
}

Person loadPerson(String personne) throws ClassNotFoundException, IOException {
ObjectInputStream objstream = new ObjectInputStream(new FileInputStream(personne));
Object object = objstream.readObject();
objstream.close();
return (Person) object;
}

Mais si je voulais sauvgarder/récuperer N personnes à la fois !Comment faire ???

Merci d'avance pour vos réponses.^^

2 réponses

  1. Salut,

    Sérialiser:
    try { 
    ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("nomDuFichier.sav")); 
    out.writeObject(monObject1); 
    out.writeObject(monObject2); 
    out.close(); 
    } 
    catch( IOException e ) 
    {....}


    Désérialiser:
    try { 
    ObjectInputStream in = new ObjectInputStream(new FileInputStream("nomDuFichier.sav")); 
    MonObject1 monObject1 = (MonObject1)in.readObject(); 
    MonObject2 monObject2 = (MonObject2)in.readObject(); 
    in.close(); 
    } 
    catch( ClassNotFoundException e1 ) 
    {....} 
    catch( IOException e2 ) 
    {....} 
    


    Cordialement,

    Dan
    1. Salut,

      ici MonObject1 et MonObject2 sont 2 classes différentes.

      Dans votre exemple de sérialisation, complétons comme ceci:
      try {
      ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("nomDuFichier.sav"));
      Personne monObject1 = new Personne ("personne1", "prenom1");
      Personne monObject2 = new Personne ("personne2", "prenom2");
      out.writeObject(monObject1);
      out.writeObject(monObject2);
      out.close();
      }
      catch( IOException e )
      {....}

      2 questions me viennent : 1 seule d'instance de la classe Personne a été sérialisée? ou les 2?
      Autre chose, si les 2 ont été sérialisées, comment récupérer mes 2 objets?

      En faisant:
      Personne p1 = in.ReadObject();
      Personne p2 = in.ReadObject();
      ?

      Dans ce cas, comment récupérer n entrées?
      Serait t'il possible de faire quelque chose du genre:
      while (Personne p = in.ReadObject()) {
      ...
      }
      ?