对Directory.GetFiles感到困惑

Tho*_*mar 14 c#

我已经阅读了有关Directory.GetPath搜索模式以及如何使用它的文档,因为我注意到它*.dll找到了test.dlltest.dll_20170206.记录了这种行为

现在,我有一个程序,它根据用户配置的掩码列出文件夹中的文件并处理它们.我注意到面具会像*.txt预期的那样导致上面提到的"问题".

但是,即使文档声明仅发生这种情况,掩码fixedname.txt也会导致fixedname.txt_20170206列表中出现等等

在searchPattern中使用星号通配符时,例如"*.txt"

这是为什么?

PS:我刚检查过:fixednam?.txt即使文档说,更改文件掩码也无济于事

使用问号通配符时,此方法仅返回与指定文件扩展名匹配的文件.例如,给定两个文件"file1.txt"和"file1.txtother",在目录中,"file?.txt"的搜索模式只返回第一个文件,而搜索模式为"file*.txt".返回两个文件.

小智 1

GetFiles 使用模式搜索,它搜索路径中以指定字母结尾的所有名称。

您可以编写类似于下面的代码来仅获取 .txt 扩展名文件

  foreach (string strFileName in Directory.GetFiles(@"D:\\test\","*.txt"))
            {
                string extension;
                extension = Path.GetExtension(strFileName);

                if (extension != ".txt")
                    continue;
                else
                {
                    //processed the file
                }
            }  
Run Code Online (Sandbox Code Playgroud)