【问题标题】:Recursively search directories n directories deep递归搜索目录 n 个目录深
【发布时间】:2018-08-02 18:05:14
【问题描述】:

我正在寻找一种方法来查找具有特定扩展名的目录中的所有文件。

我正在使用以下代码:

string dir = "C:\temp"
FileInfo[] fsis = new DirectoryInfo(dir).GetFiles("*.cfg", SearchOption.AllDirectories);

问题是某些目录包含许多嵌套目录,因此需要很长时间。假设我知道所有 .cfg 文件最多只能有 n 个目录深,有什么方法可以修改上面的代码以仅搜索那么远,还是我必须从头开始编写自己的递归文件查找器?

【问题讨论】:

标签: c#


【解决方案1】:
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);

【讨论】:

    猜你喜欢
    • 2016-09-06
    • 2013-06-17
    • 1970-01-01
    • 2011-08-15
    • 1970-01-01
    • 2011-04-21
    • 2010-12-01
    相关资源
    最近更新 更多