2016-07-27 126 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 
    } 
}