Voici une fonction récursive qui va supprimer tous les fichiers d'un répertoire donné et naviguer dans la structure du répertoire. Une chaîne de modèle peut être fournie pour fonctionner uniquement avec les fichiers d'une extension donnée, selon votre commentaire à une autre réponse.
Action<string,string> fileDeleter = null;
fileDeleter = (directoryPath, pattern) =>
{
string[] files;
if (!string.IsNullOrEmpty(pattern))
files = Directory.GetFiles(directoryPath, pattern);
else
files = Directory.GetFiles(directoryPath);
foreach (string file in files)
{
File.Delete(file);
}
string[] directories = Directory.GetDirectories(directoryPath);
foreach (string dir in directories)
fileDeleter(dir, pattern);
};
string path = @"C:\some_folder\";
fileDeleter(path, "*.bmp");
Les répertoires sont par ailleurs laissés seuls, et cela peut évidemment être utilisé avec un tableau ou d'une liste de chaînes à travailler avec plusieurs chemins d'accès initial.
Voici le même code réécrit comme une fonction standard, également avec la récursivité comme option de paramètre.
public void DeleteFilesFromDirectory(string directoryPath, string pattern, bool includeSubdirectories)
{
string[] files;
if (!string.IsNullOrEmpty(pattern))
files = Directory.GetFiles(directoryPath, pattern);
else
files = Directory.GetFiles(directoryPath);
foreach (string file in files)
{
File.Delete(file);
}
if (includeSubdirectories)
{
string[] directories = Directory.GetDirectories(directoryPath);
foreach (string dir in directories)
DeleteFilesFromDirectory(dir, pattern, includeSubdirectories);
}
}
Que voulez-vous dire "ajouter des répertoires"? – logicnp