C#搜索子目录(不适用于文件)

Bra*_*rad 8 c# search subdirectory

我看到的每个例子似乎都是递归地获取子目录中的文件只使用文件.我正在尝试做的是在文件夹中搜索名为"xxx"的特定子目录,然后将该路径保存到变量中,以便将其用于其他内容.

这可能不循环遍历所有目录并按名称进行比较吗?

Chr*_*isF 11

Directory.GetDirectories(root);
Run Code Online (Sandbox Code Playgroud)

将返回一个子目录数组.

然后,您可以使用Linq找到您感兴趣的那个:

IEnumerable<string> list = Directory.GetDirectories(root).Where(s => s.Equals("test"));
Run Code Online (Sandbox Code Playgroud)

这不是代码中的循环,但仍然是一个循环.所以最终的答案是"没有循环"就没有找不到文件夹'测试'.

您可以添加.SingleOrDefault()到Linq,但这取决于您无法找到"test"文件夹时要执行的操作.

如果您更改GetDirectories调用以包含SearchOption,SearchOption.AllDirectories那么它也会为您执行递归.显然,在这种情况下,如果目录树中有多个名为"test"的文件夹,则调用可能会返回多个项目.


Chr*_*ins 7

var foldersFound = Directory.GetDirectories(root, "test", SearchOption.AllDirectories)
Run Code Online (Sandbox Code Playgroud)

这将返回一个字符串数组,其中包含使用给定名称找到的所有文件夹.您可以更改最后一个参数,以便它只检查顶级目录,您可以更改root以调整它的起始位置.