C# C获取具有特定且完全匹配扩展名的文件

C# C获取具有特定且完全匹配扩展名的文件,c#,C#,我知道这是存在的,但答案并不完全正确。 我有一个文件夹,想获取所有扩展名为.DOC的文件名。但是目录中也有扩展名为.DOCX的文件,我不希望返回值中包含这些文件。 但是通过使用字符串[]files=System.IO.Directory.getfilepath,*.DOC,我在只搜索.DOC文件的同时获得了这两个文件。 因此,目前我正在阅读这两个文件,并使用if语句再次筛选文件名: foreach (var originfile in files) { if (Path.GetExten

我知道这是存在的,但答案并不完全正确。 我有一个文件夹,想获取所有扩展名为.DOC的文件名。但是目录中也有扩展名为.DOCX的文件,我不希望返回值中包含这些文件。 但是通过使用字符串[]files=System.IO.Directory.getfilepath,*.DOC,我在只搜索.DOC文件的同时获得了这两个文件。 因此,目前我正在阅读这两个文件,并使用if语句再次筛选文件名:

foreach (var originfile in files)
{
    if (Path.GetExtension(originfile).ToUpper() == ".DOC")
    {
        ...
    }
}

我想问一下,是否有可能只获取带有System.IO.Directory.GetFiles的.DOC文件。声明不可能使用正则表达式

从您链接的文档中:

在搜索模式中使用星号通配符时 例如,.txt,匹配行为根据 指定文件扩展名的长度。带有文件的搜索模式 扩展名正好为三个字符时,返回具有扩展名的文件 三个或三个以上字符,其中前三个字符匹配 searchPattern中指定的文件扩展名。搜索模式 具有一个、两个或三个以上字符的文件扩展名 仅返回扩展名正好与该长度匹配的文件 searchPattern中指定的文件扩展名。当使用 问号通配符,此方法仅返回 匹配指定的文件扩展名。例如,给定一个文件中的两个文件 目录,file1.txt和file1.txtother,一种 file?.txt仅返回第一个文件,而 file.txt返回两个文件

因此,如果您使用*通配符,那么这是不可能的,您必须按照您现在的方式进行操作。

您可以使用System.Linq查询来获得您想要的内容

var files = System.IO.Directory.GetFiles(path, "*.DOC")
                 .Select(x => Path.GetExtension(x).ToUpper() == ".DOC")
                 .ToList();

是否可以仅使用System.IO.Directory.GetFiles获取.DOC文件。不,没有@兰戈的建议是你可能得到的最好的建议。这并不能回答OP的问题。这只是做他已经做过的事情的另一种方式