Bonsoir,
j'ai un petit soucis qui ne fait pas buggé mon application mais j'aimerai comprendre pourquoi ça m'affiche une erreur ( catch )
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 private void loadConsultation() { try { File f = new File("consultation.data"); if(f.exists()) { FileInputStream fis = new FileInputStream(f); ObjectInputStream ois = new ObjectInputStream(fis); consultationV =(Vector<Consultation>) ois.readObject(); ois.close(); } else f.createNewFile(); } catch(FileNotFoundException e) { System.err.println("Erreur fichier non trouvé : "+e.getMessage()); } catch(IOException e) { System.err.println("Erreur --> "+e.getMessage()); } catch(ClassNotFoundException e ) { System.err.println("Erreur ! Classe non trouvée --> "+e.getMessage()); } }
Donc je commence par vérifié si mon fichier Consultation.data existe sinon je le crée. Jusque là tout va bien. Cependant arrivé à ObjectInputStream ois = new ObjectInputStream(fis); cela lance une IOException dont le e.getMessage(); vaut null. Je ne comprends pas pourquoi cela me fait ça étant donné que je crée bien le fichier au préalable.
Au final ce que je voudrai c'est lors du lancement de mon application je lance la fonction ci dessus : loadConsultation();. Elle verifie si le fichier existe si oui elle charge les données dans mon Vector sinon elle le crée.
A remarquer que quand le fichier n'est pas vide c'est à dire que quand j'ai sérialisé des données dedans avec ma méthode :
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 private void saveConsultation() { try { File f = new File("consultation.data"); if(!f.exists()) { f.createNewFile(); } FileOutputStream fos = new FileOutputStream(f); ObjectOutputStream oos = new ObjectOutputStream(fos); oos.writeObject(consultationV); oos.close(); } catch(FileNotFoundException e) { JOptionPane.showMessageDialog(this,"Erreur Fichier non trouvé --> "+e.getMessage()); } catch(IOException e) { JOptionPane.showMessageDialog(this,"Erreur --> "+e.getMessage()); } }
l'exception n'est pas lancé donc je conclue que cela se passe que lorsque mon fichier est vide et à la ligne ObjectInputStream ois = new ObjectInputStream(fis); de ma fonction loadConsultation();. Ai-je mal utilisé les différentes classes de flux ? De plus une solution que je ne trouve pas propre pour éviter ce problème est de rajouté un if(f.length>0) avant d'aller lire et importer les données de mon fichier. Dans ce cas la je n'ai pas le problème cependant je trouve cette méthode trop brut.
J'essaye de comprendre pourquoi et comment ça se fait que j'ai ce soucis lorsque mon fichier est vide et auriez vous une solution plus propre qu'un if(f.length>0) ?
Merci à vous.
Partager