使用Directory.GetFiles()选择除特定扩展名之外的所有文件

jav*_*ene 0 c# regex directory

我在Stack Overflow上找到了关于Directory.GetFiles()的几个问题,但在所有情况下,他们都解释了如何使用它来通过多个条件查找特定扩展或一组文件.但在我的情况下,我想要的是使用正则表达式获取Directory.GetFiles()的搜索模式,该表达式返回目录的所有文件,但是我指定的集合.我的意思是不要声明我想要的那套但是差别.例如,如果我想要目录的所有文件而不是htmls.请注意,我知道它可以通过这种方式实现:

var filteredFiles = Directory
.GetFiles(path, "*.*")
.Where(file => !file.ToLower().EndsWith("html")))
.ToList();
Run Code Online (Sandbox Code Playgroud)

但这不是一个非常可重用的解决方案,如果以后我想过滤另一种文件,我必须更改代码添加|| 到何处.我正在寻找允许我创建正则表达式的东西,它包含我不想获取的文件并将其传递给Directory.GetFiles().因此,如果我想稍后过滤更多扩展,只需更改正则表达式.

Tim*_*ter 7

如果要过滤扩展,则不需要正则表达式:

// for example a field or property in your class
private HashSet<string> ExtensionBlacklist { get; } =
    new HashSet<string>(StringComparer.InvariantCultureIgnoreCase)
    {
        ".html",
        ".htm"
    };
// ...

var filteredFiles = Directory.EnumerateFiles(path, "*.*")
    .Where(fn => !ExtensionBlacklist.Contains(System.IO.Path.GetExtension(fn)))
    .ToList();
Run Code Online (Sandbox Code Playgroud)