【问题标题】:c# directory tree searchc# 目录树搜索
【发布时间】:2016-07-18 15:49:35
【问题描述】:

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

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

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

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

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

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

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

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

我已经在 foreach 中尝试了 directory.enumeratedirectories 和 directoryinfo,但我认为我可能走错了路。

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

【问题讨论】:

    标签: c# search directory


    【解决方案1】:
    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)。

    【讨论】:

      猜你喜欢
      • 2014-10-07
      • 2015-06-07
      • 2020-04-04
      • 1970-01-01
      • 2013-10-21
      • 2010-12-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多