A: Lister un répertoire Windows

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

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.