Bonjour,
J'ai écrit une méthode save dont voici le code :
Une partie de celle-ci demande une confirmation à l'utilisateur lorsque celui-ci s'apprête à écraser un fichier. En cas de non-confirmation, la méthode s'appelle à nouveau elle même afin de permettre le choix d'un nouveau fichier. C'est là que se trouve mon soucis, car à l'extrème je peux me retrouver avec de très nombreuses méthodes save() s'excécutant de manière imbriquée, et là... youyouye mémoire !
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 public void save() { if (fc.showSaveDialog(this) == JFileChooser.APPROVE_OPTION) { System.out.println("Début save"); File fichier=fc.getSelectedFile(); // Supprimer l'extension erronée, puis // Rétablir la bonne extension si elle n'est pas fournie par l'utilisateur if(Extension.getExtension(fichier)!="bing"){ //System.out.println("Avant : "+fichier.getName()+" "+fichier.getPath()); fichier=Extension.removeExt(fichier); String n=fichier.getPath(); n+=".bing"; fichier=new File(n); //System.out.println("Après : "+fichier.getName()+" "+fichier.getPath()); } if(fichier.exists()){ String mess="Etes-vous sûr de vouloir remplacer ce fichier ?"; int rep=JOptionPane.showConfirmDialog(fc,mess, "Attention",JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE); if(rep!=JOptionPane.YES_OPTION){ save(); // Possibilité de nombreuse méthodes s'exécutant simultanément... } } try { FileOutputStream sauve = new FileOutputStream(fichier); ObjectOutputStream oos = new ObjectOutputStream(sauve); for (int i = 0; i < NUMGRIDS; i++) { oos.writeObject(grids[i]); } oos.flush(); oos.close(); } catch (IOException e) { } } System.out.println("Fin save"); }
Comment faire pour éviter cela ?
Merci,
S.
Partager