2016-07-27 114 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

不要忘了你的catchtry

首先,枚舉當前目錄中的文件,然後爲其子目錄重複該方法。

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 
    } 
}