Bonjour,
actuellement, je me sers des fonctions de File pour ouvrir des dossiers/fichiers etc...afin de tester si un File est bien un dossier ou un fichier etc...et l'afficher sur un JTree.
J'ai donc ce code:
Il fonctionne correctement et je n'ai rien à redire dessus, il me va.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 private DefaultMutableTreeNode GenerationDirectory(File repertoire){ DefaultMutableTreeNode noeud_directory = new DefaultMutableTreeNode(repertoire,true); File[] liste = null; int i = 0; liste = repertoire.listFiles(); //récupération des fichiers et sous rep de root if(liste!=null){ for(i = 1; i<liste.length; i++){ DefaultMutableTreeNode buffer_tree = null; //Création d'un noeud pour y stocker un nom de répertoire if(liste[i].isDirectory()){ //Test si l'élement contenu dans liste est un répertoire ou un fichier, buffer_tree = GenerationDirectory(liste[i]); } else{ // Cas ou buffer est un fichier buffer_tree = new DefaultMutableTreeNode(liste[i],false); } noeud_directory.add(buffer_tree); } } return noeud_directory; }
Sauf que j'aimerai le ré utiliser pour une autre raison, mais une partie de ce code me dérange pour mon besoin:
Dans la boucle For, on peut voir que je teste si l'objet file est un dossier ou non, si tel est le cas, je rappele à nouveau la même méthode pour modifier mon indice etc..je le vais avec :Code:
1
2
3
4
5
6
7
8
9
10
11 for(i = 1; i<liste.length; i++){ DefaultMutableTreeNode buffer_tree = null; //Création d'un noeud pour y stocker un nom de répertoire if(liste[i].isDirectory()){ //Test si l'élement contenu dans liste est un répertoire ou un fichier, buffer_tree = GenerationDirectory(liste[i]); } else{ // Cas ou buffer est un fichier buffer_tree = new DefaultMutableTreeNode(liste[i],false); } noeud_directory.add(buffer_tree); }
Sauf que voila, j'aimerai éviter de rappeler sans cesse la méthode si le File est un dossier, j'aimerai trouver un moyen, pour que le code ne se rappelle pas.Code:buffer_tree = GenerationDirectory(liste[i]);
Est ce qu'un While ou un Do While pourrait fonctionner? J'ai bien essayé, mais j'ai des exceptions qui apparaissent...8O
Qu'en pensez vous? est ce possible...?

