Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

3 MÉTHODES DE RECHERCHE RÉCURSIVE DE FICHIERS


Information sur la source

Catégorie :Fichier / Disque Niveau : Initié Date de création : 17/11/2002 Date de mise à jour : 24/11/2002 10:53:59 Vu / téléchargé: 6 141 / 1 218

Note :
8,6 / 10 - par 10 personnes
8,60 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (14)
Ajouter un commentaire et/ou une note

Description

Cliquez pour voir la capture en taille normale
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

  • '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
'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...  
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Commentaires et avis

signaler à un administrateur
Commentaire de SupraDolph le 17/11/2002 18:29:55

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

signaler à un administrateur
Commentaire de clementio le 18/11/2002 09:14:38 administrateur CS

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

signaler à un administrateur
Commentaire de Bricomix le 18/11/2002 18:38:41

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

signaler à un administrateur
Commentaire de bobbond le 06/12/2002 18:47:04

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

signaler à un administrateur
Commentaire de DARKSIDIOUS le 25/11/2003 13:09:59 administrateur CS

Merci beaucoup PROGRAMMIX, ainsi on peut comparé 3 source avec 1 seul, c'est bien pratique !

DarK Sidious

signaler à un administrateur
Commentaire de comprateur le 28/01/2004 13:47:37

Trés bien le faite de mettre les diverses méthodes trés utile pour le Newbies que je suis

signaler à un administrateur
Commentaire de Tek le 07/10/2004 12:32:35

Très bien merci.

signaler à un administrateur
Commentaire de zoglub14 le 05/03/2006 17:42:12

Hello,

Très très bon travail, j'ai enfin une solution à ma question

Merci

10/10

signaler à un administrateur
Commentaire de Aaliibaba le 18/02/2008 22:39:13 9/10

Bonjour,

Le code source date un peu mais il m'a fait gagné un temps fou dans le programme de traitement par lot sur lequel je travaille. J'avais implémenté la méthode "winseek" qui est, après plusieurs tests, 12x plus lente dans l'environnement dans lequel je travaille.

Alors, un grand merci pour la recherche de fichiers par API et le nec plus ultra, en module directement importable (et à peine retouché) dans le projet.

ABE,

Aalii

signaler à un administrateur
Commentaire de PROGRAMMIX le 19/02/2008 06:19:43

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

Mais, visiblement, elle reste utile.

Merci pour vos remerciements,

Programmix

signaler à un administrateur
Commentaire de simon22 le 25/05/2008 17:54:26

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

signaler à un administrateur
Commentaire de acive le 06/06/2008 10:50:46

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

signaler à un administrateur
Commentaire de PROGRAMMIX le 06/06/2008 13:16:32

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.

signaler à un administrateur
Commentaire de acive le 06/06/2008 14:25:20

J'ai trouvé... c'est du DOS ça fait long-temps.. :)
T'as raison
Alors tu fais *ir* et c'est bon..
Merci

Ajouter un commentaire



Nos sponsors

Sondage...

CalendriCode

Janvier 2009
LMMJVSD
   1234
567891011
12131415161718
19202122232425
262728293031 

Consulter la suite du CalendriCode



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,702 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.