Directory.GetFiles searchPattern与文档不一致

时间:2014-01-17 15:37:24

标签: c# .net

我见过这个问题:Is this a bug in DirectoryInfo.GetDirectories(string searchPattern)?

这与我的问题并不完全一致,所以无论如何我都会问。

我的代码是:

var pattern = @"file.*";
foreach (var file in Directory.GetFiles(".", pattern))
{
    Console.WriteLine(file);
}

在我目前的目录中,我有filefile.txt。正如(未)预期的那样,找到了两个文件。

它是一个错误还是记录在某个地方?我在Mono上发现了这个问题并想在那里提交一个bug,但我先检查了VS2012,它似乎也出现了......

当然我知道如何过滤结果,但它......无论如何都让我感到愤怒,所以我想知道这些来源。

1 个答案:

答案 0 :(得分:6)

这是Windows(和DOS)解释通配符的方式。与UNIX不同,Windows在内部实际上区分了文件名的“名称”部分和“扩展”部分(这是臭名昭着的“8.3”限制来自的地方)。它不再具有这种内部区别,但其遗留在Windows中。

因此Windows / DOS搜索模式搜索两个组件,名称和扩展名。模式file.*匹配名为file的任何文件,其扩展名为*(即,任何扩展名)。 filefile.txt都符合此标准。

我倾向于同意这没有多大意义,但事实就是如此。