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 :
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 :
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; }
mon main :
(DFFichier est le nom de la classe)
voivi l'erreur qui s'affiche :
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();} }
Je tiens aussi à vous préciser que ma classe DFConnexion implémente bien l'interface serialisable.
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)
Quelqu'un pourrait-il me dire où se trouve l'erreur ?
Partager