使用c#获取带有*.tif文件掩码的目录下的文件

本文关键字:文件 掩码 tif 获取 使用 | 更新日期: 2023-09-27 18:07:12

所以,我觉得问这个问题很蹩脚,但我有点难住了。我试图获得以tif结尾的目录中的文件列表…除非……不是tiff。所以,我在c#中做了这个…

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

我希望它只返回tif文件,但事实并非如此。我也会生气。我会认为,如果我提供掩码.tif?,这将得到我两个,但不是掩码.tif。我在命令提示符下也试过了,我在DOS中也得到了这两个提示符。我遗漏了什么吗?这在我看来是不对的。我想我可以在之后对结果进行消毒,但如果我不需要这样做的话,那就最好了。

使用c#获取带有*.tif文件掩码的目录下的文件

From MSDN:

在搜索模式中使用星号通配符(for例如,"*.txt"),匹配行为会根据不同的指定文件扩展名的长度。带有文件的搜索模式的扩展名恰好三个字符返回具有扩展名的文件的三个或三个以上字符,其中前三个字符匹配在searchPattern中指定的文件扩展名。一个searchPattern具有一个、两个或三个以上字符的文件扩展名只返回扩展名长度与匹配的文件在searchPattern中指定的文件扩展名。问号通配符,此方法只返回匹配指定的文件扩展名。例如,给定a目录"file1.txt"answers"file1.txt"。的搜索模式"file?.txt"只返回第一个文件,而搜索模式为"file*.txt"返回两个文件。

Directory。getfile作品。从手册:

在搜索模式中使用星号通配符时,例如"*.txt",当扩展名恰好是3时的匹配行为字符长度不同于扩展名的长短长度不超过三个字。搜索模式,文件扩展名为正好三个字符返回扩展名为3或的文件更多字符,其中前三个字符与文件匹配

Directory.GetFiles内部使用来自Win32 API的FindFirstFile函数。

摘自FindFirstFile的文档:

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

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

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