Directory.EnumerateFiles具有“特殊”过滤器

时间:2016-12-13 16:52:18

标签: c# .net directory file-extension

我需要过滤目录中的一些文件。我必须使用不同的扩展来过滤不同类型的文件,但其中一个是“?? b”。例 29389.99b或382802.03b。对于其他文件,它工作正常但我怎么能过滤这个? 我正在使用

var files = Directory.EnumerateFiles(path, "*.*", SearchOption.AllDirectories)
    .Where(s => s.EndsWith(".??b") || s.EndsWith(".in") || s.EndsWith(".txt"));

由于

2 个答案:

答案 0 :(得分:1)

您可以使用正则表达式解决它。以下代码可以帮助您。

var files = Directory.EnumerateDirectories(path).Where(s => Regex.IsMatch(s, @"(.*)\.+.{2}b$"));

答案 1 :(得分:1)

检查分机长度和最后一个字母。

var files = Directory.EnumerateFiles(path, "*.*", SearchOption.AllDirectories)
    .Where(s =>
    {
        string ext = Path.GetExtension(s);
        return ext.Length == 4 && ext.EndsWith("b")
            || s.EndsWith(".in")
            || s.EndsWith(".txt");
    });