只搜索目录中的特定文件夹

本文关键字:文件夹 搜索 | 更新日期: 2023-09-27 17:50:42

我需要搜索目录中的特定文件夹。

我不想去找文件,不需要搜索文件。

我可以在目录中搜索特定文件夹但是对于像

这样的文件,我必须使用for循环
foreach (FileInfo f in dir.EnumerateFiles())
{
      //code
}
foreach (DirectoryInfo d in dir.EnumerateDirectories())
{
   Call function recursively
}

我只需要搜索特定的文件夹。因为我有20000个左右的文件,所以如果我使用上面的代码,那么循环将遍历所有的文件,并且花费更多的时间。

但是我只需要一些文件夹,比如

Regex.IsMatch(dir.FullName, @"1293.*T.*"))

只搜索目录中的特定文件夹

如果Directory.GetDirectory过载提供的搜索模式不足以满足您的需求,您可以使用自定义方法。

static string SearchDirectory(string path, string pattern)
{
    var regex = new Regex(pattern);
    foreach (var d in Directory.GetDirectories(path))
    {
        var dirName = d.Substring(d.LastIndexOf('''') + 1);
        if (regex.IsMatch(dirName)) return d;
        SearchDirectory(d, pattern);
    }
    return null;
    //Or throw an Exception
}

您可能需要在try/catch块中包围foreach循环。

你可以使用System.IO.Directory.GetDirectories重载来接受一个搜索模式。

例如:

string[] dirs = Directory.GetDirectories(@"c:'", "c*");

您的问题非常令人困惑,但是您想获得与Regex模式匹配的目录吗?

foreach (DirectoryInfo d in dir.EnumerateDirectories().Where(d => Regex.IsMatch(dir.FullName, @"1293.*T.*")))
{
}