[Java] serialisation!

Fermé
putu - 30 août 2009 à 18:10
 debutantJava - 26 oct. 2009 à 21:30
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.^^
A voir également:

2 réponses

Utilisateur anonyme
30 août 2009 à 19:36
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
debutantJava
26 oct. 2009 à 21:30
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