Parcourir une arborescence récursivement

Signaler
Messages postés
23
Date d'inscription
lundi 30 juin 2003
Statut
Membre
Dernière intervention
26 mars 2007
-
Twinuts
Messages postés
5345
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
11 février 2020
-
Bonjour,

J'ai un souci : je voudrais lister un répertoire, trouver tous les fichiers .txt qui sont dedans, y compris ceux des sous-répertoires.
Je précise que je ne connais pas la profondeur des répertoires analysés.
Comment puis-je faire ??

Pour le moment, j'utilise cette méthode :

public Vector scanDir(File dir)
    {
            File[] files;

            files = dir.listFiles();
            txtFiles = new Vector<File>(files.length);

            for(int i = 0; i < files.length; i++)
            {
                if(files[i].isFile() && isAcceptable(files[i]))
                    txtFiles.add(files[i]);
                else if(files[i].isDirectory())
                    scanDir(files[i]);
            }
       
        return txtFiles;
    }

La méthode isAcceptable teste l'extension du fichier et retourne un booléen.

Ma méthode prend le premier répertoire qu'elle trouve, descend récursivement jusqu'à tomber sur les fichiers...
Mais après, je ne remonte pas de niveau, et je ne sais pas comment récupérer la profondeur de l'arborescence dans laquelle je suis, et du coup, je ne récupère pas tous les fichiers mais seulement ceux du premier répertoire. :S:(

Merci pour votre aide.

Cordialement,
Kouikoui

5 réponses

Messages postés
987
Date d'inscription
mardi 31 mai 2005
Statut
Membre
Dernière intervention
30 août 2012
14
Quand tu fais

 if(files[i].isDirectory())

          scanDir(files[i]);

tu dois recuperer le vector et l'Ajouter a ton vecteur. Version : files.addAll(scanDir(files[i]));


++
Messages postés
5345
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
11 février 2020
90
Salut,

regarde ICI tu as une réponse toute faite, bon ça parse des fichiers audio mais bon tu as juste à remplacer le filtre pour parser des .txt

Merci de faire une recherche avant de poster !

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

WORA
Messages postés
23
Date d'inscription
lundi 30 juin 2003
Statut
Membre
Dernière intervention
26 mars 2007

Hum,
Je vois pas trop ce que tu veux dire ... :S

Le probleme, c'est que je reinitialise mon vecteur a chaque appel de scanDir();
Est ce que je ne devrais pas plutot en faire une variable de classe ?
Ou statique ?

Je continue a chercher ...
Merci.

Kouikoui
Messages postés
23
Date d'inscription
lundi 30 juin 2003
Statut
Membre
Dernière intervention
26 mars 2007

Je viens de regarder la source pour MP3.
Désolé pour les messages, mais j'avais déja cherché avant de poster.

Merci pour votre aide !!

Kouikoui
Messages postés
5345
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
11 février 2020
90
Salut,

tu as juste à faire un txtFiles.clear() avant d'appeler ta methode et hop il est comme neuf :D

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

WORA