c#目录树搜索

时间:2016-07-18 15:49:35

标签: c# search directory

我必须进行目录搜索并将其映射到ui作为树结构。我将用以下结构解释我的问题

根目录有 - > [dir1] [dir2] [dir3] ..... [nth dir](注意只有目录,没有文件)

[dir1]有 - > [dir1a] [dir1b] [dir1c] .... [nth dir1](注意只有目录,没有文件)

[dir1a]有 - > [1dir] [2dir] [3dir](不会只有目录而没有文件)

[1dir]有 - >一些文件和目录

所以我需要的是目录的名称,直到包含文件的目录

在上述情况下,将是dir1 / dir1a / 1dir

我想扫描所有只包含目录且没有文件的目录。我需要包含文件的目录的完整路径。

我在foreach中尝试过directory.enumeratedirectories和directoryinfo,但我想我可能会走错路。

任何想法如何扫描所有目录并获取包含文件的目录的路径。

1 个答案:

答案 0 :(得分:0)

public void FindDirectoriesWithFiles(List<string> paths, DirectoryInfo workingDir)
{
    // if this directory has files in it, add its path to the list.
    if (workingDir.GetFiles().Length > 0)
    {
        paths.Add(workingDir.FullName);
    }
    else
    {
        // Else, this directory has no files, so iterate through its children.
        foreach (var childDir in workingDir.GetDirectories())
        {
            FindDirectoriesWithFiles(paths, childDir);
        }
    }
}

按如下方式调用上述方法:

var paths = new List<string>();
FindDirectoriesWithFiles(paths, new DirectoryInfo(@"C:\"));
// 'paths' now contains the folders you're looking for.

请注意,此解决方案会停止搜索包含文件的文件夹的子文件夹。例如,如果C:\Dir1\Dir1a\Dir1b中包含文件,但其中也包含子文件夹(例如C:\Dir1\Dir1a\Dir1b\Dir1c),则不会搜索这些子文件夹(本例中为Dir1c)。