Directory.GetFiles(...)带有模式*。???返回有趣的结果

时间:2016-02-26 08:57:07

标签: c# .net directory filenames

我正在使用以下代码:

var di = new DirectoryInfo("path/to/dir");
var matchingFiles = di.GetFiles("*.???);

正如所料,像

这样的文件
  • file.bat
  • test.1.xml
  • a.txt.txt

被退回。但是,有一些有趣的结果。如the MS-documentation所述,也会搜索短名称。我还找到了the information about the dot-selector working in .NET 4+。我仍然看不到这解释了以下结果:

  • file1.xml.2
  • afilewithoutextension

Q1:如何解释此结果。

Q2:如何匹配模式*。[3个任意字符]。

2 个答案:

答案 0 :(得分:3)

Q2)您可以使用iPhone::get_xxx()Path class代替:

LINQ

答案 1 :(得分:2)

  

如何解释这个结果。

如您所知,短名称始终被搜索;它们总是有三个字符的扩展名(即使这些字符是空格)。

  

如何匹配模式*。[3个任意字符]。

检查代码(例如,使用正则表达式)。 MS-DOS通配符非常有限,向后兼容性要求使它们更弱;它们实际上只对特定匹配有用,而不是一般过滤。