[algoritmique][débutant]Méthode récursive
Bonjour,
J'ai écrit une méthode save dont voici le code :
Code:
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.