我發現了有關Directory.GetFiles()的堆棧溢出的幾個問題,但在所有情況下,他們解釋瞭如何使用它來查找特定擴展名或通過多個標準的一組文件。但在我的情況下,我想要的是使用正則表達式獲取Directory.GetFiles()的搜索模式,該模式返回目錄中的所有文件,但返回了我指定的集合。我的意思是不宣佈我想要的那一套,但不同之處。例如,如果我想要一個目錄的所有文件而不是htmls。請注意,我」,M知道它可以通過這種方式來實現這一目標:使用Directory.GetFiles()來選擇除了特定擴展名之外的所有文件
var filteredFiles = Directory
.GetFiles(path, "*.*")
.Where(file => !file.ToLower().EndsWith("html")))
.ToList();
但是,這並不是一個很可重複使用的解決方案,如果以後我要篩選另一種文件,我不得不改變代碼添加一個||到Where條件。我正在尋找一些東西,允許我創建一個正則表達式,它包含我不想獲取的文件並將其傳遞給Directory.GetFiles()。所以,如果我想稍後過濾更多的擴展,只是改變正則表達式。
// 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();
看到一個非常相似的http://stackoverflow.com/questions/13301053/directory-getfiles-of-certain-extension –