使用C#在* .tif文件掩码中获取目录

时间:2013-04-03 16:55:35

标签: c# winforms dos

所以,我觉得这个问题很蹩脚,但我有点难过。我想在一个以tif结尾的目录中获取一个文件列表...只有tif ...而不是tiff。所以,我在C#中做到了这一点......

Directory.GetFiles(path, "*.tif", SearchOption.TopDirectoryOnly);

我希望它只返回tif文件,但事实并非如此。我也得到了tiff。我想如果我提供了面具 .tif? ,那将会让我两个,但不是面具 .TIF 即可。我也在命令提示符下尝试了它,我在DOS中也得到了它们。我在这里错过了什么吗?这对我来说似乎不对。我想我之后可以对结果进行消毒,但如果我没有这样做那将是最好的。

4 个答案:

答案 0 :(得分:2)

来自MSDN:

  

在searchPattern中使用星号通配符时(for   例如,“* .txt”),匹配行为取决于   指定文件扩展名的长度。带有文件的searchPattern   正好三个字符的扩展名返回带扩展名的文件   三个或更多字符,前三个字符匹配   searchPattern中指定的文件扩展名。一个searchPattern   文件扩展名为一个,两个或三个以上的字符   仅返回扩展名完全匹配的文件   searchPattern中指定的文件扩展名。 使用时   问号通配符,此方法仅返回文件   匹配指定的文件扩展名。例如,给定两个文件   目录,“file1.txt”和“file1.txtother”,搜索模式   “file?.txt”仅返回第一个文件,而搜索模式为   “file * .txt”返回两个文件。

答案 1 :(得分:1)

这就是Directory.GetFiles的工作原理。从手册:

  

在searchPattern中使用星号通配符时,例如   “* .txt”,扩展名正好为3时的匹配行为   字符长度与扩展名或多或少时不同   超过三个字符。 searchPattern,文件扩展名为   正好三个字符返回扩展名为3或的文件   更多字符,前三个字符与文件匹配   searchPattern中指定的扩展名。

答案 2 :(得分:0)

Directory.GetFiles内部使用FindFirstFile function from Win32 API

来自FindFirstFile的文档:

  

•搜索包括长文件名和短文件名。

文件名长为asd.tiff的文件将有一个短文件名,如asd~1.tif,这就是它出现在结果中的原因。

答案 3 :(得分:0)

当路径位于网络共享(或映射驱动器)上时,超过三个字符扩展名与匹配,但除外。由于某种原因,模式只匹配远程驱动器上的长文件名。