[英]Recursively search directories n directories deep
我正在寻找一种方法来查找具有特定扩展名的目录中的所有文件。
我正在使用以下代码:
string dir = "C:\temp"
FileInfo[] fsis = new DirectoryInfo(dir).GetFiles("*.cfg", SearchOption.AllDirectories);
问题是某些目录包含许多嵌套目录,因此需要很长时间。 假设我知道所有的.cfg文件最多只能有n个目录,有什么方法可以修改上面的代码只搜索那么远,或者我必须从头开始写我自己的递归文件查找器?
List<FileInfo> FindFiles(List<FileInfo> results, string dir, int depth)
{
// Get all cfg files in current directory
results.AddRange(new DirectoryInfo(dir).GetFiles("*.cfg"));
if(depth > 1)
{
// Recurse in all subdirectories
foreach (DirectoryInfo d in new DirectoryInfo(dir).GetDirectories())
{
// But dont go as deep in those subdirectories
FindFiles(results, d.FullName, depth - 1);
}
}
return results;
}
然后你可以打电话
List<FileInfo> = FindFiles(new List<FileInfo>(), "C:\Example", 5);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.