2009-04-22 15 views
1

すべての.rar拡張ファイルを特定のドライブのすべてのディレクトリから削除します。私は "D:\ Test"を持っていると言います。これはたくさんの.rarファイルまたは.zipファイルを作成しています。プログラムが実行されると、すべての.rarファイルのみが削除され、他の拡張ファイルは同じままでなければならず、削除されたrarファイルの数がいくつ表示されるはずです。私はサブディレクトリのn detphtでn個のファイルを作成することができますが、プログラム実行中はすべての.rarファイルを削除する必要があります。これは私がプログラムを書いたので、その特定のドライブに多くのファイルを作成しましたが、ファイルがないというアプリケーションを実行しているときは、常にelse条件をチェックしています。ここで私のコードpls誰かがそれを変更します。このコードを変更してヘルプが必要です

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(); 
} 

答えて

0

コードは正常です。 else条件を入力すると、d:\ test(またはサブフォルダ)の下に.rarファイルがないか、またはコードを実行しているアカウントにこのフォルダに対する読み取りアクセス権がないことを意味します。

0

いくつかの提案:

  1. 隠されたとして、ファイルやディレクトリがマークされていないことを確認します。
  2. 各ファイルにFileInfo[] dirRar = dirMain.GetFiles("*.*");反復を試してみて、あなたはそれがここで働くあなたのRARファイル
+1

ありがとうミスター。 Soniは今、うまく動作しています... – user59637

0

を取得しているかどうかを確認してください。

D:\ Testのすべてのrarファイルが削除されました。

1

私にとってはうまく動作します。おそらくd:\Testが存在することを確認してください。脇に - GetFilesの再帰的なオーバーロードは、複雑なアクセス権セットを取得すると、少しばかりです。あなたはサブフォルダ周りtry/catch使用して、手動で再帰を行うことによって、より良いだろう。

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); 
関連する問題