Bonjour,
En me basant sur le code fournit dans la Faq java, j'ai écrit une classe me permettant de sérialiser un objet de ma classe que j'ai appelée DFConnexion.
Je tiens à préciser que le code fournit dans la faq permet la sérialisation d'un seul objet et la désérialisation de celui-ci. or moi je souhaite ajouter au fur et à mesure dans la fichier de sorti des objets, et lors de la désérialisation, parcourir le fichier à la recherche de chacun d'eux que je stocke au fur et à mesure dans une List qui sera retournée.
voici les 2 méthodes associées :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
 
	/*** SERIALISATION DE L'OBJET DFCONNEXION ***/
	public void ecritObjDsFichier(DFConnexion con, String nomfichier) throws Exception{
		FileOutputStream fos = new FileOutputStream(nomfichier,true); //fichier de sortie
		ObjectOutputStream oos = new ObjectOutputStream(fos);
		oos.writeObject((Object)con);
		oos.flush();
		oos.close();
 
	}
 
	/*** DESERIALISATION DE L'OBJET DFCONNEXION ***/
	public List litObjDsFichier(String nomfichier) throws Exception{
		List listeConnexions= new ArrayList();
		DFConnexion obj = new DFConnexion();
 
		FileInputStream fis = new FileInputStream(nomfichier);
		ObjectInputStream ois = new ObjectInputStream(fis);
		obj=(DFConnexion)ois.readObject();
		while(obj!=null){
			listeConnexions.add(obj);
			obj=(DFConnexion)ois.readObject();
		}
		ois.close();
		return listeConnexions;
	}
La sérialisation a bien marché. Le problème maintenant c'est que lors de la désérialisation, j'ai une erreur que je ne comprend pas :
mon main :
(DFFichier est le nom de la classe)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
 
	public static void main(String[] args) {
		DFConnexion con = new DFConnexion();
		DFFichier dff1 = new DFFichier();
		try{
			List listeCon = dff1.litObjDsFichier("serie.cnx");
			for(int i=0; i<listeCon.size(); i++){
				con=(DFConnexion)listeCon.get(i);
				System.out.println("serveur "+i+" "+con.getDfSrv());
			}
			System.out.println("Succes de l'operation");
		}catch(Exception e){e.printStackTrace();}
	}
voivi l'erreur qui s'affiche :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
java.io.StreamCorruptedException: invalid type code: AC
	at java.io.ObjectInputStream.readObject0(Unknown Source)
	at java.io.ObjectInputStream.readObject(Unknown Source)
	at df.java.gesfichier.DFFichier.litObjConnexionDsFichier(DFFichier.java:136)
	at df.java.gesfichier.DFFichier.main(DFFichier.java:159)
Je tiens aussi à vous préciser que ma classe DFConnexion implémente bien l'interface serialisable.
Quelqu'un pourrait-il me dire où se trouve l'erreur ?