gpt4 book ai didi

使用 Directory.GetFiles 和搜索模式的 C# 递归目录

转载 作者:行者123 更新时间:2023-11-30 15:08:28 24 4
gpt4 key购买 nike

我想使用递归查找目录结构中的所有 excel 文件。问题是,Directory.GetFiles 中使用的搜索模式一次只允许一个扩展名。

有没有人知道解决这个问题的方法,或者我是否必须多次递归目录以寻找特定的扩展?或者您可以只抓取每个文件,然后遍历该列表以查找特定的扩展名。这两种方式听起来都有些低效。

谢谢

最佳答案

在 .NET 中每个版本都有 SearchOption.TopDirectoryOnly 和 SearchOption.AllDirectories

在 .NET 4 中,您可以非常高效做例如:

        var regex = new Regex(@"\d+", RegexOptions.Compiled);

var files = new DirectoryInfo(topdir)

.EnumerateFiles("*.*", SearchOption.AllDirectories)

.Where(fi => regex.IsMatch(fi.Name));

(此示例过滤名称中包含两位数字的文件)

为了模拟这一点,编写一个递归枚举器方法(yield return)来返回所有文件,并像这样过滤结果:

 IEnumerable<FileInfo> Recurse(string topdir)
{
// for each GetFiles() array element
// if is_not_dir yield return
// else Recurse(subdir)
}

var filtered = Recurse.Where(fi => regex.IsMatch(fi.Name));

HTH

关于使用 Directory.GetFiles 和搜索模式的 C# 递归目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5512013/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com