Parcourir une arborescence récursivement

cs_Kouikoui Messages postés 23 Date d'inscription lundi 30 juin 2003 Statut Membre Dernière intervention 26 mars 2007 - 4 août 2006 à 15:44
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 - 4 août 2006 à 17:45
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

Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
4 août 2006 à 17:09
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
0
cs_Kouikoui Messages postés 23 Date d'inscription lundi 30 juin 2003 Statut Membre Dernière intervention 26 mars 2007
4 août 2006 à 17:13
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
0
cs_Kouikoui Messages postés 23 Date d'inscription lundi 30 juin 2003 Statut Membre Dernière intervention 26 mars 2007
4 août 2006 à 17:18
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
0
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
4 août 2006 à 17:45
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_laurent1024 Messages postés 987 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 30 août 2012 25
4 août 2006 à 15:54
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]));


++
-1
Rejoignez-nous