[Algo] lister les fichiers récursivement

lister les fichiers récursivement [Algo] - Programmation

Marsh Posté le 14-02-2001 à 12:12:20    

:hello:
 
Est ce que quelqu'un aurait un algo pour lister les fichiers récursivement dans un répertoire donné (en fait ça correspond à ce que fait la fonction dir /s) ?
 
Si ça peut être utile, on peut supposer qu'on dispose d'une fonction qui liste les fichiers et une autre qui liste les répertoires, mais sur un niveau seulement. Donc pour chaque répertoire il faut rentrer dedans et lister à nouveau fichier et répertoire, ...
 
Parce que là j'ai un peu de mal :D

Reply

Marsh Posté le 14-02-2001 à 12:12:20   

Reply

Marsh Posté le 14-02-2001 à 12:21:39    

Hop, un tuyeau:
Tu considere comme structure de donnee un arbre (non-binaire).
donc la sdd de base c'est un noeud, avec des champs:
noeud *pere, noeud *premier-fils, noeud *frere-suivant
Lorque tu entre dans un directory, tu crees la liste des fils du directory (suite chainee de noeuds pointant sur le meme directory pere), et tu etablis le lien premier-fils, et les liens frere-suivant (a partir de l'ordre lexicologique des noms des repertoires fils).
Tu es donc ramene a un parcour recursif d'arbre, "depth-first".
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 14-02-2001 à 12:44:40    

bah... tu peux mettre dans ta fonction qui liste les repertoires un test ki fait:
 
  si c un fichier
  alors on affiche le fichier
  sinon on rappelle la fonction ki liste les repertoires (avec bien sur le nom du repertoire comme argument !!!)
 
Et la, HOP !! plus kune seule fonction :D


---------------
"C'est le boulot qu'on ne commence jamais qui est le plus long à terminer"
Reply

Marsh Posté le 14-02-2001 à 14:32:30    

Houla :ouch: les arbres, je me rappelle que c'était assez chiant les cours sur ça :(
 
merci quand même gilou, je devrais arriver à me débrouiller avec ça :jap:
 
wouatouwouatou > nan je peux pas modifier cette fonction, je peux juste m'en servir (et pis c'est pas moi qui l'ai faite) :D

Reply

Marsh Posté le 16-02-2001 à 23:05:03    

T'as un exemple de code (windows) qui fait ca dans le wdj de janvier 2000.
Vas voir sur le site web www.wdj.com
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 16-02-2001 à 23:50:27    

L'arbre je vois pas trop l'intérêt, à moins que tu veuilles pouvoir te ballader dedans ...
Si c'est juste pour lister les fichiers utilise une fonction récursive.

Reply

Marsh Posté le 17-02-2001 à 01:16:44    

>L'arbre je vois pas trop l'intérêt, à moins que tu veuilles pouvoir te ballader dedans ...  
 
J'avais pas dit qu'il fallait le construire, l'arbre, j'avais donne le principe de l'algo:
Tu es donc ramene a un parcour recursif d'arbre, "depth-first".  
 
C'est a dire: tu dois utiliser une fonction similaire a celles employees dans un parcour recursif d'arbre, "depth-first".
 
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 17-02-2001 à 12:00:24    

Partant de tes deux fonctions : ListeRepertoires (sur un niveau) et ListeFichiers (sur un niveau), ta fonction récursive ressemble à ça :
 
ListeRecursivement(chemin)
{
    ListeRepertoires(chemin)
    Pour tous les répertoires trouvés :
    {
       Si (Repertoire<>"." et Repertoire <>".." )
       {
          ListeRecursivement(chemin+repertoire)
       }
    }
 
    ListeFichiers(chemin)
}
 
La ligne "Si (Repertoire<>"." et Repertoire <>".." )" permet d'éviter une boucle infinie sur le répertoire courant et le répertoire parent.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed