Bonjour à tous,
désolé de vous déranger un dimanche .
Je suis en formation Java et je dois ecrire une appli qui écrit quelques Objets (d'une Classe que j'ai sérialisée) dans un seul fichier.
Mon problème, c'est que je ne sais pas relire tout le contenu, je n'ai que le premier Objet qui s'affiche.
J'utilise le format Binaire et non texte.
Voici les codes :
Ma classe Article :
J'ai créé une Classe de gestion de fichier Objet :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 import java.io.Serializable; public class Article implements Serializable { String nom; double prix; boolean dispo; }
et enfin mon main :
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 import java.io.*; public class FichierObjet { private ObjectOutputStream ofW; // Définit un Objet fW de type ObjectOutpustream Utilisé pour écrire private ObjectInputStream ofR; // Définit un Objet fW de type ObjectInputstream Utilisé pour lire private String nomDuFichier = "stock.txt"; private char mode; // De façon générale, les traitements sur fichier se déroulent en 3 temps : // 1-Ouverture du flux // 2-Traitement des données // 3-Fermeture du flux. // 1 - Ouverture Du flux. public void ouvrir(String s) throws IOException { mode = (s.toUpperCase()).charAt(0); if(mode == 'R' || mode == 'L'){ ofR = new ObjectInputStream (new FileInputStream(nomDuFichier)); } else if(mode == 'W' || mode == 'E'){ ofW = new ObjectOutputStream (new FileOutputStream(nomDuFichier)); } } // 2 - Traitement des données (du fichier). // Pour l'écriture public void ecrire (Article tmp) throws IOException{ if (tmp != null) { ofW.writeObject(tmp); ofW.flush();//Vide le tempon } } // Pour la lecture public Article lire() throws IOException, ClassNotFoundException { Article tmp = (Article) ofR.readObject(); return tmp; } // 3 - Fermeture du flux. public void fermer() throws IOException{ if(mode == 'R' || mode =='L') ofR.close(); else if(mode == 'W' || mode == 'E') ofW.close(); } }
J'aimerai avoir ceci comme retour
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 import java.io.IOException; public class Creer2Articles { public static void main(String[] args) throws IOException, ClassNotFoundException { Article article1 = new Article(); article1.nom = "table"; article1.prix = 1000; article1.dispo = false; Article article2 = new Article(); article2.nom = "canapé"; article2.prix = 2999.99; article2.dispo = true; FichierObjet articles = new FichierObjet(); articles.ouvrir("Ecrire"); articles.ecrire(article1); articles.ecrire(article2); articles.fermer(); articles.ouvrir("Lire"); Article MonArticle = articles.lire(); System.out.println("Article [nom="+MonArticle.nom+", prix="+MonArticle.prix+", dispo="+MonArticle.dispo+"]"); articles.fermer(); } }
Article [nom=table, prix=1000.0, dispo=false]
Article [nom=canapé, prix=2999.99, dispo=true]
Mais je n'ai que ça :
Ma question :Article [nom=table, prix=1000.0, dispo=false]
Comment aller chercher tous les Articles (Objets) de mon fichier. En ouvrant mon fichier, même si c'est du binaire, je constate que les objets s'y trouvent bien.
Ce que je ne sais pas faire c'est tous les récuperer.
J'espère avoir été clair et je vous remercie par avance de vos retours.
Bomatch
@+
Partager