Bonjour,

J'ai écrit une méthode save dont voici le code :

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");
    }
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 !

Comment faire pour éviter cela ?

Merci,

S.