为什么以下代码获取.docx文件?我搜索使用正则表达式搜索特定的文件扩展名。我需要有多个文件扩展名才能搜索。但是我找不到它。我知道我可以使用循环来完成,但我认为是否快速获得它。您能提供给我或示例的链接吗?提前致谢。
Dim dirInfo As New DirectoryInfo(RootPath)
Dim files As FileInfo() = dirInfo.GetFiles("*.doc", SearchOption.TopDirectoryOnly)
答案 0 :(得分:0)
在目录中查找多个扩展的一种方法是使用模式列表和LINQ:
的组合 Dim CurrentDir = New IO.DirectoryInfo(RootPath)
Dim patterns = {".docx", ".xlsx", ".ini"}
Dim files = (From f In CurrentDir.EnumerateFileSystemInfos("*", IO.SearchOption.TopDirectoryOnly)
Where patterns.Contains(f.Extension)
Select f)
这样做的一个优点是所有匹配都是文字的,没有影响结果的通配符匹配。
答案 1 :(得分:0)
在阅读DirectoryInfo.GetFiles()的MSDN文档之后,这似乎是出于某种原因而设计的。这将回答问题"为什么会发生这种情况?"
在searchPattern中使用星号通配符时(例如," * .txt"),匹配行为会根据指定文件扩展名的长度而有所不同。 文件扩展名为三个字符的searchPattern将返回扩展名为三个或更多字符的文件,其中前三个字符与searchPattern中指定的文件扩展名匹配。文件扩展名为一个,两个或三个以上字符的searchPattern仅返回扩展名与searchPattern中指定的文件扩展名完全匹配的文件。使用问号通配符时,此方法仅返回与指定文件扩展名匹配的文件。 例如,给定目录中的两个文件," file1.txt"和" file1.txtother","文件的搜索模式?.txt"仅返回第一个文件,而搜索模式为" file * .txt"返回两个文件。
看起来你可能在这里有一个未说明的问题,你可以做什么来获得.doc文件而不获取.docx文件。如果这是您的下一个问题,请告诉我,我可以帮忙回答这个问题。