2010-06-02 11 views
2

Eh bien, j'aime ce joli morceau de code ici, il semble fonctionner impressionante mais je ne peux pas sembler plus ajouter des répertoires à elleSupprimer tous les fichiers et dossiers dans le répertoire multiple mais laissez le directoy

DirectoryInfo dir = new DirectoryInfo(@"C:\temp"); 

foreach(FileInfo files in dir.GetFiles()) 
{ 
    files.Delete(); 
} 

foreach (DirectoryInfo dirs in dir.GetDirectories()) 
{ 
    dirs.Delete(true); 
} 

Je voudrais aussi ajouter dans des dossiers spéciaux ainsi que l'histoire et les cookies et comment je vais y aller (je voudrais inclure au moins 4-5 dossiers différents)

+1

Que voulez-vous dire "ajouter des répertoires"? – logicnp

Répondre

1

Peut-être quelque chose comme ça aiderait. Je ne l'ai pas testé.

public void DeleteDirectoryFolders(DirectoryInfo dirInfo){ 
    foreach (DirectoryInfo dirs in dirInfo.GetDirectories()) 
    { 
     dirs.Delete(true); 
    } 
} 

public void DeleteDirectoryFiles(DirectoryInfo dirInfo) { 
    foreach(FileInfo files in dirInfo.GetFiles()) 
    { 
     files.Delete(); 
    } 
} 

public void DeleteDirectoryFilesAndFolders(string dirName) { 
    DirectoryInfo dir = new DirectoryInfo(dirName); 
    DeleteDirectoryFiles(dir) 
    DeleteDirectoryFolders(dir) 
} 

public void main() { 
    List<string> DirectoriesToDelete; 
    DirectoriesToDelete.add("c:\temp"); 
    DirectoriesToDelete.add("c:\temp1"); 
    DirectoriesToDelete.add("c:\temp2"); 
    DirectoriesToDelete.add("c:\temp3"); 
    foreach (string dirName in DirectoriesToDelete) { 
    DeleteDirectoryFilesAndFolders(dirName); 
    } 
} 
+0

Quelque chose comme ça, mais tous les événements de moins de 1 bouton cliquez aussi il serait bon d'avoir quelque chose là-dedans pour scanner un lecteur entier et supprimer toute une extension spécifique qui serait agréable. – NightsEVil

0

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); 
    } 
} 
+0

obtiennent le "Utilisation du type générique 'System.Action ' nécessite 1 type d'arguments" je suis actuellement dans Visual Studio Express 2010 mais mon cadre cible est 2.0 si cela aide – NightsEVil

+0

@NightsEVil, je crois que l'argument multiple Action est. NET 3.5+, mais ne me citez pas sur ce point. Je vais ajouter un exemple de code de fonction standard. –

+0

mais il doit être un événement sur clic comme private void button5_Click (expéditeur d'objet, EventArgs e) – NightsEVil