Bonjour, j'espère poster dans le bon forum cette fois-ci,
je vous explique mon problème:
je possède une classe (la fenêtre principale de mon application) qui contient en mémoire un tableau de 32 cases pouvant chacune contenir un objet dérivé du type JPanel (qui contient d'autre JPanel ainsi que plein de boutons, de JTextFiel et d'autres trucs).
Je voudrais pouvoir sauvegarder le tableau d'objets (ou les objets qu'il contient) dans un fichier (.txt, .ser ou autre) pour pouvoir restaurer ce tableau (ou les objets) lors d'une prochaine réouverture du programme.
J'ai trouver pas mal de récit sur la sérialisation ou l'externalisation mais rien qui ne se rapporte à mon cas de figure.
mon code a la forme suivante pour la sauvegarde:
et la forme suivante pour le chargement:
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 private void sauver_objetsActionPerformed(ActionEvent evt) { try{ FileOutputStream l_fos = new FileOutputStream("sauvegarde.ser"); ObjectOutputStream l_oos = new ObjectOutputStream (l_fos); l_oos.write(this.compteur_objets);//une variable globale qui compte le nombre d'objets présents dans le tableau d'objets for(indice_tab=0;indice_tab<32;indice_tab++){ if(tableau_postes[indice_tab]!=null){ l_oos.writeObject(tableau_postes[indice_tab]); } else{} } l_oos.flush(); l_oos.close(); }catch(java.io.IOException er){er.printStackTrace();} }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 private void charger_objetsActionPerformed(ActionEvent evt) { try{ FileInputStream l_fis = new FileInputStream("sauvegarde.ser"); ObjectInputStream l_ois = new ObjectInputStream(l_fis); int nb_objets = (int) l_ois.read(); MonObjet data_objets = (MonObjet) l_ois.readObject(); for(indice_tab=0;indice_tab<nb_objets;indice_tab++){ tableau_Objets[indice_tab]=(MonObjet) data_objets; } } catch(java.io.IOException err) {jTextArea1.append("\n erreur chargement\n\n");} catch (ClassNotFoundException e) {jTextArea1.append("\n fichier non trouve\n\n");} }
évidemment le programme n'apprécie pas les commandes, mais je ne vois pas du tout comment faire mon affaire.
Merci en tout cas de pouvoir m'éclairer.
free-lance
Partager