2016-07-27 5 views
1

ルートディレクトリのファイルを紛失することなくディレクトリを再帰的にループする方法はありますか?C#でルートディレクトリを持つディレクトリを再帰的に検索

私はディレクトリ内のすべてのファイルを再帰的に検索する機能を持っていますが、はルートディレクトリにファイルをリストしません。

public static void ShowFiles(string dirpath) 
{ 
    try 
    { 
     foreach (string d in Directory.GetDirectories(dirpath)) 
     { 
      foreach (string f in Directory.GetFiles(d)) 
      { 
       Console.WriteLine(f); 
      } 
      ShowFiles(d); 
     } 
    } 

誰もが、私はあまりにも、ルートディレクトリ内のファイルを一覧表示するには、これを変更することができますどのように私を導くことはできますか?

答えて

2

ファイルをリストするコードを最上位に移動します。つまり、ディレクトリを再帰的に処理するループの外側に移動します。

foreach (string f in Directory.GetFiles(dirpath)) { 
    Console.WriteLine(f); 
} 
foreach (string d in Directory.GetDirectories(dirpath)) { 
    ShowFiles(d); 
} 
+0

ありがとうございました! –

0

あなたtrycatchすることを忘れないでください。

まず、カレントディレクトリのファイルを列挙し、その子ディレクトリのメソッドを繰り返します。

public static void ShowFiles(string dirpath) 
{ 
    Console.WriteLine(String.Format("Files in {0}:", dirpath)); 
    try 
    { 
     foreach (string f in Directory.GetFiles(dirpath)) 
     { 
      Console.WriteLine('\t' + f); 
     } 

     foreach (string d in Directory.GetDirectories(dirpath)) 
     { 
      ShowFiles(d); 
     } 
    } 
    catch (Exception e) 
    { 
     // do something with e 
    } 
} 
関連する問題