0

我正在使用以下命令获取 FileSystemInfo 的列表

IList<FileSystemInfo> requestFiles = 
                new List<FileSystemInfo>(
                    _RequestDirectory.GetFileSystemInfos(GetSearchPatern())); 

获取搜索模式返回“*.exr”。该列表仍包括以“.exr2”结尾的文件,但不包括以“.exr.bak”结尾的文件。这是预期的功能吗?我应该手动检查返回的文件吗?我注意到这与我从命令行上的 dir 命令得到的结果相同。

4

2 回答 2

2

来自 MSDN:

在 searchPattern 中使用星号通配符时,例如“.txt”,当扩展名正好是三个字符时的匹配行为与扩展名大于或小于三个字符时的匹配行为不同。文件扩展名正好是三个字符的 searchPattern 返回具有三个或更多字符扩展名的文件, 其中前三个字符与 searchPattern 中指定的文件扩展名匹配。文件扩展名为一个、两个或三个以上字符的 searchPattern 仅返回扩展名与 searchPattern 中指定的文件扩展名完全匹配的文件。当使用问号通配符时,该方法只返回与指定文件扩展名匹配的文件。例如,给定目录中的两个文件,“file1.txt”和“file1.txtother”,搜索模式为“file? 。文本文件”只返回第一个文件,而搜索模式“文件.txt" 返回两个文件。

从这里拉http://msdn.microsoft.com/en-us/library/wz42302f.aspx

.exr.bak 与“*.exr”不匹配的原因是因为扩展名被确定为最后一个 '.' 之后的字符集。(或文件扩展名分隔符),因此 .exr 与 .bak 不匹配。

于 2009-09-02T18:18:49.613 回答
1

这是由为文件自动生成的短名称引起的。简而言之,扩展名始终是“。”之后的最后一个。并且最多有 3 个字符。这意味着“example.ext2”的短名称将以“.ext”结尾,“example.ext.bak”的短名称将以“.bak”结尾。

于 2009-09-02T18:00:56.933 回答