Classe recursive fichiers

Description

Classe pour construire l'arborescence d'un répertoire sans utiliser FSO.
Son fonctionnement est donc basé sur les API : FindFirstFile et FindNextFile
On récupère les informations disponibles des structures WIN32_FIND_DATA et FILETIME

La classse permet également de tester la présence d'un disque, répertoire, fichier même
avec un chemin formaté UNC par renvoi d'1 évènement Status en cas d'absence de l'élément demandé.

Permet aussi de décomposer l'ensemble chemin-Fichier, (à finir)
de créer des nodes dans 1 TreeView avec ou sans les icones associés à l'extension des fichiers.

Propriétés : *********************************************************************************
strSelPath, Lecture/Ecriture Nom du chemin sélectionné
strSelFilter, Lecture/Ecriture filtre sélectionné (préformaté à *.*),
le filtre peut-être directement 1 nom de fichier.
FileCount, Lecture, renvoi nbre de fichiers trouvés dans chemin-filtre sélectionné
ArrFiles, Lecture, tableau des infos trouvées dans chemin-filtre sélectionné
l'info renvoyée est fonction de l'option de Enum optDataFile/fichiers
strDrive, Lecture, nom du disque local ou éloigné du chemin-filtre sélectionné
ArrFullPathFiles, Lecture, tableau des fichiers avec leur chemin Complet trouvés dans chemin-filtre sélectionné
ArrPath Lecture, Bricole A faire => tableau des Path pour décomposition chemins-filtres
ArrExtension Lecture Bricole A faire => tableau des extentions des fichiers trouvés
Order_by Lecture/Ecriture par défaut sans tri. Si renseigné, il y aura tri alpha des fichiers, forcément c'est plus long ! et pas forcément utile si résultat versé dans List ou TreeView !
FileExists facile à développer quasiment en événement
PathExists facile à développer " " " "

Méthodes : *********************************************************************************
Scan parcourt le chemin-filtre sélectionné en lançant la fontion interne
Check ou SortedCheckA-Z selon la propriété Order_by.
AddNodesTV Construit des Nodes dans le TreeView passé en argument, en option recherche les icones
lorsque le paramètre bFindIcon est True, à False par défaut (gain de temps)
Le TreeView paramétré devrait avoir une ImageList associée comportant les clés :
"DRIVE" pour disque, "DOS" pour Dossier, "OTHERS" pour tous les icones divers qu'on ne sait pas rattacher ....
GetIconsInFolder ajoute les icones fichiers au treeview. Prévu pour l'évènement Expand du TV. Voir commentaires avec la source.

Evénements: ********************************************************************************
Status informe l'utilisateur "chemin-filtre inaccessible" ; "chemin-filtre parcouru"
"Parcours complet du chemin-filtre en cours"
ProgressNodes % de progession de la contruction des nodes
ProgressScan ??????? base du calcul !

Conclusion :


Je développe un programme perso de sauvegardes, et au départ j'utilisais FSO pour identifier des fichiers dans des sous-répertoires, c'était lent ! Alors j'ai fouillé et j'ai eu l'idée de développer une classe à partir des API FindFirstFile et FindNextFile, j'ai vu qu'on pouvait en extraire des tas d'infos... Je ne sais d'ailleurs pas bien comment appeler cette classe qui en fait déborde de la simple identification des fichiers présents dans une branche répertoire, puisque j'y ai prévu la possibilité d'y construire des nodes dans 1 treeview ....

Il reste beaucoup à optimiser, notamment :
les Tris en terme de vitesse, Ne pas passer par PictureBox pour ajouter 1 Icone à ImageList associée au TV, et les bricoles à finir dont je n'ai pas besoin actuellement.

Bien entendu je suis preneur de toutes améliorations.

S'il existe d'autres codes dans le même esprit que le mien, merci de m'en faire part dans le but d'amélioration.

Codes Sources

A voir également

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.