Bonjour à tous.
Voilà je vais tenter d'en venir au fait assez rapidement.
J'ai une Hashtable dans laquelle j'ai un ensemble d'objet que je souhaiterais sérialiser lors de la fin de mon application et désérialiser lors de son lancement.
Pour ce faire j'ai déclarer une méthode comme suit:
Lors de la compilation aucun problème, mais lorsque je vais voir dans le fichier obtenu, je me retrouve avec des caractères bizarre dedans, et aucune trace de mes objets. Donc première question, est ce que ma façon de procéder est correcte? Si non, pourriez vous me dire où je devrais faire attention?
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55 public boolean Serialise_Objet(Hashtable value, String FileName) { String RepTravail; String FS; Properties PropLogin = new Properties(); RepTravail = System.getProperty("user.home"); FS = System.getProperty("file.separator"); ObjectOutputStream oos; try{ oos = new ObjectOutputStream(new FileOutputStream(RepTravail + FS + FileName)); System.out.println("\n\tLa collection"); Enumeration e; for ( e = value.elements(); e.hasMoreElements();) { /*String NumInvent = (String)e.nextElement(); MembresPersonnel MP = (MembresPersonnel)Collection_Piece.get(NumInvent);*/ PieceMuseeSciencesNaturelles PMSN = (PieceMuseeSciencesNaturelles)e.nextElement(); try{ oos.writeObject(PMSN); } catch(FileNotFoundException FNF) { System.out.println("Erreur de creation du fichier Collections.ser !! ["+ FNF.getMessage() + "]"); } catch(IOException excp) { System.out.println("Erreur d'écriture des pièces !! [" + excp.getMessage() + "]"); } } try{ oos.close(); } catch(IOException ioexcp) { System.out.println("Erreur lors de la fermeture de la collections!! [" + ioexcp.getMessage() +"]"); } } catch(FileNotFoundException FNF) { System.out.println("Erreur de creation du fichier Collections.ser !! ["+ FNF.getMessage() + "]"); } catch(IOException excp) { System.out.println("Erreur d'écriture des pièces !! [" + excp.getMessage() + "]"); } return true; }
Ensuite, pour la désérialisation de mes objets, j'utilise la méthode suivante:
Lors de l'appel de cette dernière lors du lancement de l'applicaton, je me retrouve avec le message d'erreur suivant:
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57 public boolean Deserialise_objet(Hashtable Liste, String FileName) { String RepTravail; String FS; Properties PropLogin = new Properties(); RepTravail = System.getProperty("user.home"); FS = System.getProperty("file.separator"); ObjectInputStream ois; try { System.out.println("Test1"); String Way = new StringBuffer().append(RepTravail).append(FS).append(FileName).toString(); ois = new ObjectInputStream(new FileInputStream(Way)); System.out.println(ois.getClass()); Object obj = null; System.out.println("Test 2"); try { System.out.println("Test dans try 1"); while( (obj = ois.readObject()) != null ) { System.out.println("Test dans try 2"); obj = ois.readObject(); /* if ( obj.getClass() == PieceMuseeSciencesNaturelles) { PieceMuseeSciencesNaturelles PMSN = obj; System.out.println("Numero d'inventaire: " + PMSN.getReference() ); }*/ System.out.println("Numero d'inventaire: " + obj.toString() + "Classe de obj: " +obj.getClass().getName()); Liste.put(obj.toString(), obj); // Liste.add(obj); } } catch(ClassNotFoundException CNFE) { System.out.println("\nErreur lors de la lecture du fichier. [" + CNFE.getMessage() + "]"); } ois.close(); } catch(IOException IOE) { System.out.println("\nErreur d'entrée sortie lors de la lecture des fichiers. [" + IOE.getMessage() + "]"); } catch(Exception EX) { System.out.println("\nErreur . [" + EX.getMessage() + "]"); } return true; }
J'ai réussi à situé, enfin j'espère, l'erreur au niveau de l'entrée dans ma boucle de lecture. L'erreur est une erreur de IOExeption. J'ai vérifier mon chemin d'accès et il correspond à l'emplacement de mon fichier.Erreur d'entrée sortie lors de la lecture des fichiers. [null]
Quelqu'un parmis vous aurait-il une idée de la provenance de mes bugs?
Merci d'avance pour votre aide,
Richard_Sraing
p.s.: pour ceux qui ont eux le courage de lire ce message jusqu'au bout, PieceMuseeSciencesNaturelles est bien sûr un objet du type que je souhaiterais sérialiser.
Partager