如何在不丢失根目录文件的情况下递归遍历目录?
我有以下函数以递归方式搜索目录中的所有文件,但它不会列出根目录中的文件。
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);
}
}
有人可以指导我如何修改它以列出根目录中的文件吗?
答案 0 :(得分:2)
将列出文件的代码移动到顶层,即在递归处理目录的循环之外。
foreach (string f in Directory.GetFiles(dirpath)) {
Console.WriteLine(f);
}
foreach (string d in Directory.GetDirectories(dirpath)) {
ShowFiles(d);
}
答案 1 :(得分:0)
别忘了catch
try
。
首先,枚举当前目录中的文件,然后为其子目录重复该方法。
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
}
}