只搜索目录中的特定文件夹
本文关键字:文件夹 搜索 | 更新日期: 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.*")))
{
}