[Java] serialisation!

putu -  
 debutantJava -
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. danimo
     
    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
    0
  2. debutantJava
     
    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()) {
    ...
    }
    ?
    0