gpt4 book ai didi

c# - 从 Directory.GetFiles 中排除结果

转载 作者:太空狗 更新时间:2023-10-30 00:20:47 24 4
gpt4 key购买 nike

如果我想打电话Directory.GetFiles并让它返回所有与模式 *.bin 匹配的文件,但我想排除所有与模式 LOG#.bin 匹配的文件,其中 # 是一个不确定长度的运行计数器。有没有办法在将搜索过滤器传递给 GetFiles 的步骤中过滤掉结果,或者我必须获取结果数组然后删除我想要排除的项目?

最佳答案

您可以使用 Linq, Directory.EnumerateFiles() 和一个 Where() filter - 这样你就只会得到你想要的文件,其余的都被过滤掉了。

像这样的东西应该可以工作:

Regex re = new Regex(@"^LOG\d+.bin$");
var logFiles = Directory.EnumerateFiles(somePath, "*.bin")
.Where(f => !re.IsMatch(Path.GetFileName(f)))
.ToList();

正如指出的那样Directory.EnumerateFiles需要.NET 4.0。此外,使用 DirectoryInfo 是一种更简洁的解决方案(以多一点开销为代价)。/EnumerateFiles()返回 IEnumerable<FileInfo>因此您无需进一步解析即可直接访问文件名和扩展名。

关于c# - 从 Directory.GetFiles 中排除结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9106749/

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