我必须进行目录搜索并将其映射到ui作为树结构。我将用以下结构解释我的问题
根目录有 - > [dir1] [dir2] [dir3] ..... [nth dir](注意只有目录,没有文件)
[dir1]有 - > [dir1a] [dir1b] [dir1c] .... [nth dir1](注意只有目录,没有文件)
[dir1a]有 - > [1dir] [2dir] [3dir](不会只有目录而没有文件)
[1dir]有 - >一些文件和目录
所以我需要的是目录的名称,直到包含文件的目录
在上述情况下,将是dir1 / dir1a / 1dir
我想扫描所有只包含目录且没有文件的目录。我需要包含文件的目录的完整路径。
我在foreach中尝试过directory.enumeratedirectories和directoryinfo,但我想我可能会走错路。
任何想法如何扫描所有目录并获取包含文件的目录的路径。
答案 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
)。