A: Lister un répertoire Windows

Soyez le premier à donner votre avis sur cette source.

Vue 3 360 fois - Téléchargée 555 fois

Description

Bonjour,

Voici le premier d'une série d'articles sur des listes de fichiers d'un répertoire (ou dossier, english: directory, folder) sous Windows.

Commençons par deux programmes qui écrivent le résultat directement dans la console.
 
 

List.cpp


Ce code montre comment on peut "parcourir" les fichiers d'un répertoire à l'aide des fonctions FindFirstFile(?) et FindNextFile(?).
L'affichage utilise des couleurs différentes pour distinguer les répertoires des fichiers.
De plus, le répertoire initial peut être sélectionné interactivement avec SHBrowseForFolder(?)
(d'où la nécessité de #include <shlobj.h>).

Avec comme répertoire initial TestDir (voir zip), on obtient:
C:\TestDir\
C:\TestDir\Images\
C:\TestDir\Images\DSC_5344.jpg
C:\TestDir\Joli Texte.txt
C:\TestDir\Textes\
C:\TestDir\Textes\Autres Textes\
C:\TestDir\Textes\Autres Textes\En ?tÚ.txt
C:\TestDir\Textes\Texte A.txt
C:\TestDir\Textes\Texte B.txt
C:\TestDir\Textes\Texte C.txt
C:\TestDir\Textes\Vieux Textes\
C:\TestDir\Textes\Vieux Textes\Texte vieux.txt
C:\TestDir\Vide\

La copie (sans les couleurs) du contenu de la console dans le presse-papier peut se faire de la manière suivante:
Bouton droite sur l'entête de la console, Modifier, Sélectionner tout, Enter.
Pour adapter les couleurs utilisés, reportez-vous à SetConsoleTextAttribute function sous character attributes.

Constatons déjà quelques "défauts":
- Les répertoires et fichiers sont désignée par le nom complet.
- les répertoires et fichiers sont "mélangés".
- les caractères accentués sont mal interprétés.
- tous les sous-répertoires et fichiers sont affichés.
- manque d'autres informations utiles.
- etc ...
 
 

ListTab.cpp


Pour séparer les fichiers des sous-répertoires, parcourons chaque répertoire deux fois en traitant d'abord les fichiers et ensuite les sous-répertoires.
Puis, introduisons les tabulations pour éviter d'écrire systématiquement les noms complets.
Finalement, pour les fichiers, indiquons aussi la taille (en octets):
-------- C:\TestDir\ --------
Joli Texte.txt  10 Bytes
Images\
        DSC_5344.jpg  143538 Bytes
Textes\
        Texte A.txt  198 Bytes
        Texte B.txt  198 Bytes
        Texte C.txt  198 Bytes
        Autres Textes\
                En ?tÚ.txt  176 Bytes
        Vieux Textes\
                Texte vieux.txt  286 Bytes
Vide\

Bien entendu, ces deux codes sont loin d'être "utilisables" dans l'état actuel.

N'hésitez pas de faire des suggestions ou critiques pour que je puisse en tenir compte dans les prochains articles.

Bonne lecture

Codes Sources

A voir également

Ajouter un commentaire

Commentaire

Messages postés
4242
Date d'inscription
samedi 8 septembre 2007
Statut
Membre
Dernière intervention
29 août 2018
16
salut,
Dans l'absolu ca fonctionne, mais il serai plus intéressant de séparer l'acquisition (ou traitement) de l'affichage => dans l'état actuel, il faut retoucher au code pour l'adapter dans une application par exemple. Il serai plus intéressant que tes méthodes de listages renvoient un tableau (simple ou hiérarchique) et que ton main s'occupe d'afficher les résultat.

naga

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.