精确的文件扩展名与GetFiles()匹配?

Joh*_*ohn 6 c# regex filtering getfiles

我想检索一个扩展名与指定字符串完全匹配的文件列表.

DirectoryInfo di = new DirectoryInfo(someValidPath);
List<FileInfo> myFiles = new List<FileInfo>();
foreach (FileInfo fi in di.GetFiles("*.txt"))
{
    myFiles.Add(fi);
}
Run Code Online (Sandbox Code Playgroud)

我得到了带扩展名的文件,*.txt但我也得到了扩展名的文件*.txtx,所以我编码的内容相当于获取扩展名开头 的文件txt.

这不是我想要的.我是否需要获取所有文件名并进行正则表达式匹配"\\.txt$"(我认为),或者使用.EndsWith(".txt")等测试每个文件名字符串来完成此操作?

谢谢!

Fre*_*örk 4

有点解决方法,但您可以使用Where扩展方法过滤掉精确匹配:

foreach (FileInfo fi in di.GetFiles("*.txt")
    .Where(fi => string.Compare(".txt", fi.Extension, StringComparison.OrdinalIgnoreCase) == 0))
{
   myFiles.Add(fi);
}
Run Code Online (Sandbox Code Playgroud)

请注意,这将使扩展名的匹配不区分大小写。