Donnez votre avis

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

Posez votre question

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à !
Ajouter un commentaire

Commentaires

Commenter la réponse de woot6768