3 méthodes de recherche récursive de fichiers

Soyez le premier à donner votre avis sur cette source.

Vue 8 809 fois - Téléchargée 1 461 fois

Description

Lorsque je me suis mis à chercher des méthodes de recherche récursive de fichiers, j'ai été confronté à des sources utilisant des méthodes différentes que j'ai cherché à comprendre.
Puis voyant que ce thème était souvent recherché, j'ai regroupé 3 des méthodes rencontrées afin de montrer la manière de travailler de chacune d'elles et surtout la vitesse à laquelle elle tourne.

La première méthode est l'exemple livré par Microsoft avec Visual Basic : WINSEEK.VBP.
Celle-ci utilise les contrôles DriveListBox, DirListBox et FileListBox pour effectuer ses recherches.

La deuxième est celle de CML'S RECHERCHER (source n°4404), que j'ai un peu modifié pour mes besoins.
Cette méthode utilise un contrôle ListBox, des fonctions FileSystemObject et la fonction DIR

La troisième méthode (et de loin la plus rapide) est celle provenant du fichier d'aide "apidocvb.chm" dont DARKSIDIOUS parle dans sa source n°5690, "Aide sur les principales API".
Celle-ci utilise les API. Elle permet de récupérer des noms de fichiers de type "~$ojet.doc" ce qui n'est pas le cas avec une FileBox.

Source / Exemple :


'ATTENTION :
' Lorsqu'on fait une recherche de type *.* avec api, le nom de répertoire s'ajoute également à la liste.  Pour éviter cela, j'ai ajouter la vérification suivante (lignes entre les ###) dans le code "Rechercher" du module mod_API :

'(...)
'S'il ne s'agit pas du dossier...
If NomDuFichier <> "." And NomDuFichier <> ".." Then

'#############
     'S'il ne s'agit pas d'un dossier dans le cas d'une recherche de type *.*
     If (lpFindFileData.dwFileAttributes And _
          FILE_ATTRIBUTE_DIRECTORY) <> FILE_ATTRIBUTE_DIRECTORY Then
'#####################    

    'REMARQUE : prend en compte les fichiers de type
    '           "~$ojet méd.socio-péd. SAJA.doc" pouvant résulter d'un plantage du PC
                    
          'ajoute celui-ci à la liste des fichiers trouvés
          frmRechercherFichiers.ListView1.ListItems.Add , , NomDuFichier
          frmRechercherFichiers.ListView1.ListItems(frmRechercherFichiers.ListView1.ListItems.Count).ListSubItems.Add , , Chemin
        
'#######  pour ne pas l'oublier
          End If
'#######  
End If

Conclusion :


Il y a peut-être encore d'autres méthodes...
Je sais qu'il y a déjà des sources abordant ce thème sur le site, mais je n'en ai pas encore trouvé qui utilisaient les API (sauf erreur de ma part) et il me semblait important de mettre une source qui montre différents moyens.
PS : il est clair que je n'ai pas privilégié l'esthétique...

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Utilisateur anonyme
J'ai trouvé... c'est du DOS ça fait long-temps.. :)
T'as raison
Alors tu fais *ir* et c'est bon..
Merci
cs_PROGRAMMIX
Messages postés
1134
Date d'inscription
mercredi 2 octobre 2002
Statut
Membre
Dernière intervention
24 juillet 2011

Je ne sais plus si j'avais ou non prévu ce cas de figure.

As-tu testé en remplaçant ce qu'il te manque par une étoile , genre "*ir" pour les partir, revenir ?

Si ça ne marche pas, il faudra modifier le code pour intégrer cette option.
Utilisateur anonyme
Salut, Géniale la source.
Mais connais tu un moyen de faire la recherche qu'avec une partie du nom du fichier?
Comme on fait avec "InStr"
Ex: on cherche le texte "ir" et il trouve les fichiers "avenir" et "partir"
Sinon rien à dire... merci
cs_simon22
Messages postés
161
Date d'inscription
vendredi 8 octobre 2004
Statut
Membre
Dernière intervention
20 août 2015

c'est intéressent en effet, par contre, ton bouton "Annuler" ne sert strictement a rien, quans on lance une grosse recherche le programme se flige jusqu'à ce qu'il ai terminer. sinon merci bien pour avoir poster ce comparatif.

Simon22
cs_PROGRAMMIX
Messages postés
1134
Date d'inscription
mercredi 2 octobre 2002
Statut
Membre
Dernière intervention
24 juillet 2011

Bientôt 6 ans que cette source aura été déposé... soupir...

Mais, visiblement, elle reste utile.

Merci pour vos remerciements,

Programmix

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.