Lister tous les fichiers d'un dossier (et ses sous-dossiers)

Introduction

Voila juste un petit tuto pour lister tous les fichiers d'un dossier (et ses sous-dossiers).
Moi ça fait 3 jours que j'ai commencé le C# et il n'y en avait pas de commenté, donc j'ai fais le mien.

Code commenté

/////////////////////////////
// Lister tous les fichiers d'un dossier (et ses sous-dossiers) :
//
// 'allFiles' est ma StringCollection contenant la liste complete de tous les fichiers
//  Pourquoi une StringCollection ? Parce que les tableaux ont une taille fixe et 
//  utiliser une StringCollection est le seul moyen de lister tous les fichiers de 
//  dossiers et sous-dossiers.
//  (Merci à Bidou !)
//
// 'path' le dossier sélectionné
//
// 'ext' la liste des extensions pour filtrer les fichiers listés
//
// 'scanDirOk' un boolean me permettant d'accepter les scans des sous-dossiers
// 
public StringCollection listAllFiles(StringCollection allFiles, string path, string ext, bool scanDirOk)
{
    // listFilesCurrDir : Tableau contenant  la liste des fichiers du dossier 'path'
    string[] listFilesCurrDir = Directory.GetFiles(path, ext);

    // On lit le tableau 'listFilesCurrDir' 
    foreach (string rowFile in listFilesCurrDir)
    {
        // Si le fichier n'est pas deja dans la liste 'allFiles'
        if (allFiles.Contains(rowFile) == false)
        {
            // On ajoute le fichier (du moins son adresse) a 'allFiles'
            allFiles.Add(rowFile); 
        }
    }
    // Vide la table 'listFilesCurrDir'pour la prochaine liste de sous-dossiers
    listFilesCurrDir = null;

    // Si on autorise la lecture des sous-dossiers
    if (scanDirOk)
    {
        // On liste tous les sous-dossiers présents dans le 'path'
        string[] listDirCurrDir = Directory.GetDirectories(path);

        // Si il existe des sous-dossiers (si la liste n'est pas vide)
        if (listDirCurrDir.Length != 0)
        {
            // On lit le tableau 'listDirCurrDir'
            foreach (string rowDir in listDirCurrDir)
            {
                // On relance la procédure pour qu'elle scanne chaque sous-dossier
                listAllFiles(allFiles, rowDir, ext, scanDirOk);
            }
        }
        // Vide la table 'listDirCurrDir'pour la prochaine liste de sous-dossiers
        listDirCurrDir = null;
       
    }
    // On retourne 'allFiles'
    return allFiles;
}

Voilà !

Ce document intitulé « Lister tous les fichiers d'un dossier (et ses sous-dossiers) » issu de CodeS SourceS (codes-sources.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.