C#中具有根目录的递归搜索目录

本文关键字:递归 搜索 根目录 | 更新日期: 2023-09-27 17:58:57

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

我有下面的函数,它递归地搜索目录中的所有文件,,但它不列出根目录中的文件

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

有人能指导我如何修改它以列出根目录中的文件吗?

C#中具有根目录的递归搜索目录

将列出文件的代码移动到顶层,即递归处理目录的循环之外。

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

不要忘记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
    }
}