3 méthodes de recherche récursive de fichiers

Soyez le premier à donner votre avis sur cette source.

Vue 8 752 fois - Téléchargée 1 459 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

SupraDolph
Messages postés
196
Date d'inscription
samedi 12 janvier 2002
Statut
Membre
Dernière intervention
1 septembre 2008
1 -
SUPER !!!
je met 9 et pas 10 car tout n'est pas de toi mes c'est bien et super interessant surtout la methode pas API qui est très rapide
clementio
Messages postés
432
Date d'inscription
samedi 18 mai 2002
Statut
Modérateur
Dernière intervention
17 février 2014
-
C'est un travail intéressant en matière de test mais un peu facile de combiner 3 sources pour n'en faire qu'une seule...

Enfin bref, je ne t'en veux pas mais pour ceux qui voudraient voir la deuxième méthode (dont je suis l'auteur) rendez-vous ici:
http://www.vbfrance.com/article.aspx?Val=4404
Bricomix
Messages postés
340
Date d'inscription
vendredi 11 octobre 2002
Statut
Membre
Dernière intervention
14 février 2005
-
Ouahh MERCI !!!!!! Je n'ai pas encore testé mais 10/10. Ca faisait un bout de temps que je recherchai ça (je voulais une méthode rapide et pas compliqué).

Merci beaucoup PROGRAMMIX
bobbond
Messages postés
3
Date d'inscription
vendredi 6 décembre 2002
Statut
Membre
Dernière intervention
6 décembre 2002
-
Extra!!
J'étais a la recherche d'une methode comme celle-ci. Cependant j'ai constaté que l'application plante à la deuxième rechecher avec API????

Merci beaucoup Bobbond
cs_DARKSIDIOUS
Messages postés
15815
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
83 -
Merci beaucoup PROGRAMMIX, ainsi on peut comparé 3 source avec 1 seul, c'est bien pratique !

DarK Sidious

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.