我使用搜索模式GetFiles
使用此代码:
Dim wordFiles As FileInfo()= New DirectoryInfo(source).GetFiles("*.doc")
source
目录中的文件是:
为什么我收到的文件不具备确切的搜索模式?我明白了:
我只期望' Test.doc'作为输出文件。
答案 0 :(得分:2)
MSDN says这是预期的行为:
在searchPattern中使用星号通配符(例如“* .txt”)时,匹配行为会根据指定文件扩展名的长度而有所不同。具有正好三个字符的文件扩展名的searchPattern将返回扩展名为三个或更多字符的文件,其中前三个字符与searchPattern中指定的文件扩展名匹配。
文件扩展名为一,二或三个以上字符的searchPattern仅返回扩展名与searchPattern中指定的文件扩展名完全匹配的文件。使用问号通配符时,此方法仅返回与指定文件扩展名匹配的文件。
例如,给定目录中的两个文件“file1.txt”和“file1.txtother”,搜索模式“file?.txt”仅返回第一个文件,而搜索模式为“file *。 txt“返回两个文件。
您可以在获得文件后过滤这些文件:
New DirectoryInfo(source).
GetFiles("*.doc").
Where(Function (t) t.Extension.Equals(".doc", StringComparison.OrdinalIgnoreCase)).
ToArray()
答案 1 :(得分:0)
正如MSDN根据此链接所述:DirectoryInfo.GetFiles Method (String, SearchOption)
在searchPattern中使用星号通配符时(for 例如," * .doc"),匹配行为取决于 指定文件扩展名的长度。带有文件的searchPattern 正好三个字符的扩展名返回带扩展名的文件 三个或更多字符,前三个字符匹配 searchPattern中指定的文件扩展名。一个searchPattern 文件扩展名为一个,两个或三个以上的字符 仅返回扩展名完全匹配的文件 searchPattern中指定的文件扩展名。使用时 问号通配符,此方法仅返回文件 匹配指定的文件扩展名。例如,给出两个文件 目录," file1.txt"和" file1.txtother",搜索模式 "文件的.txt&#34?;只返回第一个文件,而另一个搜索模式返回两个文件。
我冒昧地尝试为您找到解决方法,但似乎唯一可行的解决方案仅适用于.NET 4.0及更高版本:GetFiles with multiple and specific extentions c#
string[] patterns = new { ".xls", ".xlsx" };
return patterns.AsParallel().SelectMany(p =>
Directory.EnumerateFiles(path, p, SearchOption.AllDirectories));