begin process at 2012 02 10 02:01:54
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Fichier / Disque

 > 3 MÉTHODES DE RECHERCHE RÉCURSIVE DE FICHIERS

3 MÉTHODES DE RECHERCHE RÉCURSIVE DE FICHIERS


 Information sur la source

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

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
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é :7 031 / 1 286

Auteur : PROGRAMMIX

Ecrire un message privé
Site perso
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

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources du même auteur

Source avec Zip Source avec une capture MOTS CACHÉS - MOTS MÊLÉS - MOTS MASQUÉS
Source avec Zip Source avec une capture CONTRÔLE POUR LA SAISIE D'HORAIRE DE TRAVAIL
Source avec Zip Source avec une capture UTILISATION DE L'API SENDMESSAGE AVEC UNE LISTBOX OU UN COMB...
Source avec Zip Source avec une capture CONTRÔLE POUR SÉLECTIONNER DES FICHIERS COMME LA BOÎTE DE DI...
Source avec Zip Source avec une capture L'API ABORTDOC PERMET D'ANNULER L'IMPRESSION EN COURS D'UN D...

 Sources de la même categorie

Source avec Zip Source .NET (Dotnet) MODIFIER LES EXTENSION DES FICHIERS par okosa
ROUTINE DIR RÉCURSIVE POUR OBTENIR LA LISTE DE TOUS LES FICH... par kerisolde
Source avec Zip Source avec une capture FILE,SECURITY,FICHIER par okosa
Source avec Zip Source avec une capture Source .NET (Dotnet) PATCHEUR DE FICHIER par tototh
Source avec Zip Source avec une capture LECTURE DES INFORMATIONS DES DISQUES COMPOSANT UN ENSEMBLE R... par jack

Commentaires et avis

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

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

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

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

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

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

Commentaire de Tek le 07/10/2004 12:32:35

Très bien merci.

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

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

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

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

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

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.

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

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), 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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,733 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales