Alors comment je ferai s'il vous plaît ??
Salut, j'ai testé ton code et en effet ça plante bien!!
Par contre j'ai fait un essai avec un autre code qui ne pose aucun probleme.
Il ne correspond pas exactement a ce que tu fait mais ça s'en approche il te restera que de toute petites modif.
voici le code de save:
et celui de read :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 static public void simpleSave(Livre c) throws IOException, ClassNotFoundException { ArrayList lc = new ArrayList(); if(simpleRead()!=null && simpleRead().size()>0) lc = simpleRead(); lc.add(c); ObjectOutputStream os = new ObjectOutputStream(new FileOutputStream(file)); os.writeObject(lc); os.close(); }
J'ai ajouter le EOFException, car lorsque le fichier était vide il planté.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 static public ArrayList simpleRead() throws IOException, ClassNotFoundException { ArrayList lc = null; try { ObjectInputStream is = new ObjectInputStream( new FileInputStream(file)); lc = (ArrayList) is.readObject(); is.close(); } catch (EOFException e) { e.printStackTrace(); } return lc; }
Et le code de la methode main
Et bien sûr la variable file dans ma classe main pour éviter que tu ter demande d'où cela viens (la String n'est qu'un exemple tu peut essayer d'autre extension aussi):
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 public static void main(String[] args) { Livre c1 = new Livre(1,"TITRE1", "AUTEURE1"); try { if(!file.exists()){ file.createNewFile(); } simpleSave(c1); ArrayList lc = simpleRead(); for(int i=0; i<lc.size(); i++){ Livre livre = (Livre)lc.get(i); System.out.println("Livre : index="+livre.getIndex()+", titre="+livre.getTitre()+", auteur="+livre.getAuteur()); } } catch (IOException e) { // TODO Bloc catch auto-généré e.printStackTrace(); } catch (ClassNotFoundException e) { // TODO Bloc catch auto-généré e.printStackTrace(); } }
A chaque fois que tu lancera la methode main cela te rajoutera un objet Livre dans la liste sérialisé sous forme de fichier.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 private static File file = new File("d:\\mesLivres.bin");
j'espère que ça te permettra de te débloquer
Au fait adiGuba, le problème est résolu.
Merci beaucoup pour vos aides. la modification de ninlock sur mon code est exécutée avec succès.
Merci à tout qui ont participé dans cette discussion, je vous remercie tous pour vos aides.
Sisiniya.
Partager