/////////////////////////////
// Lister tous les fichers d'un dossier (et ses sous-dossiers) :
//
// 'allFiles' est ma StringCollection contenant la liste complete de tous les fichiers
// Pourquoi une StringCollection ? Par ce que les tableaux ont une taille fixe et
// utiliser une StringCollection est le seul moyen de lister tous les fichiers de
// dossiers et sous-dossier.
// (Merci à Bidou !)
//
// 'path' le dossier selectionner
//
// 'ext' la liste des extensions pour filtrer les fichers listés
//
// 'scanDirOk' une bool me permettant d'accepeter les scanne 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;
}
// Voila !
/////////////////////////////