在C#中使用根目录递归搜索目录

时间:2016-07-27 10:42:10

标签: c# search file-io directory

如何在不丢失根目录文件的情况下递归遍历目录?

我有以下函数以递归方式搜索目录中的所有文件,但它不会列出根目录中的文件。

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 个答案:

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