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:
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;
} |
Il fonctionne correctement et je n'ai rien à redire dessus, il me va.
Sauf que j'aimerai le ré utiliser pour une autre raison, mais une partie de ce code me dérange pour mon besoin:
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);
} |
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 :
buffer_tree = GenerationDirectory(liste[i]);
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.
Est ce qu'un While ou un Do While pourrait fonctionner? J'ai bien essayé, mais j'ai des exceptions qui apparaissent...
Qu'en pensez vous? est ce possible...?
Partager