2009-04-22 5 views
1

Je veux supprimer tous les fichiers extension .rar de tous les répertoires avec lecteur particulier. Dites que j'ai "D: \ Test" sous ceci j'ai créé de nombreux fichiers .rar ou fichiers .zip. Une fois le programme lancé, tous les fichiers .rar doivent être supprimés et les autres fichiers d'extension doivent rester identiques. Le nombre de fichiers rar supprimés doit être le même. Je peux créer n de fichiers dans n detpht de sous-répertoire mais pendant que le programme exécute tous les fichiers .rar doivent être supprimés. Pour cela, j'ai écrit un programme, et j'ai créé de nombreux fichiers dans ce lecteur particulier, mais quand je cours l'application en disant qu'il n'y a pas de fichiers, je veux dire qu'il vérifie toujours la condition d'autre. Voici mon code pls quelqu'un le modifier.Besoin d'aide en modifiant ce code

static void Main(string[] args) 
{ 
    DirectoryInfo dirMain = new DirectoryInfo("D:\\Test"); 
    if (dirMain != null) 
    { 
     FileInfo[] dirRar = dirMain.GetFiles("*.rar", SearchOption.AllDirectories); 
     if (dirRar != null && dirRar.Length > 0) 
     { 
      for (int i = 0; i < dirRar.Length; i++) 
      { 
       Console.WriteLine(dirRar[i].FullName); 
       dirRar[i].Delete(); 
      } 
      Console.WriteLine("Total no of files deleted" + dirRar.Length.ToString()); 
     } 
     else 
     { 
      Console.WriteLine("There is no file"); 
     } 
    } 
    Console.ReadKey(); 
} 

Répondre

0

Votre code est correct. Si vous entrez la condition else, cela signifie qu'il n'y a aucun fichier .rar sous d: \ test (ou n'importe quel sous-dossier) ou que le compte sous lequel vous exécutez votre code n'a pas d'autorisations de lecture sur ce dossier.

0

Quelques suggestions:

  1. Vérifiez que les fichiers ou le répertoire ne sont pas marqués comme masqués.
  2. Essayez FileInfo[] dirRar = dirMain.GetFiles("*.*"); itérer sur chaque fichier et vérifier si vous obtenez votre fichier rar
+1

Merci mr. Soni fonctionne bien maintenant ... – user59637

0

Il travaille ici.

Tous les fichiers rar de D: \ Test ont été supprimés.

1

Fonctionne bien pour moi; peut-être vérifier qu'il existe d:\Test? En aparté - notez que la surcharge récursive de GetFiles est un peu floconneuse lorsqu'elle atteint des ensembles d'autorisations complexes. Vous feriez mieux en faisant la récursion manuellement, en utilisant try/catch autour des sous-dossiers:

int count = 0; 
Queue<string> dirs = new Queue<string>(); 
dirs.Enqueue(@"d:\Test"); 
while(dirs.Count > 0) { 
    string dir = dirs.Dequeue(); 
    try 
    { 
     foreach (string subdir in Directory.GetDirectories(dir)) 
     { 
      dirs.Enqueue(subdir); 
     } 
    } 
    catch (Exception ex) { Console.Error.WriteLine(ex); }// access denied etc 

    foreach (string file in Directory.GetFiles(dir, "*.rar")) 
    { 
     try 
     { 
      File.Delete(file); 
      count++; 
     } 
     catch (Exception ex) { Console.Error.WriteLine(ex); }// access denied etc 
    } 
} 
Console.WriteLine("Deleted: " + count); 
Questions connexes