使用正则表达式在目录中搜索文件扩展名

时间:2014-04-02 22:49:37

标签: vb.net

为什么以下代码获取.docx文件?我搜索使用正则表达式搜索特定的文件扩展名。我需要有多个文件扩展名才能搜索。但是我找不到它。我知道我可以使用循环来完成,但我认为是否快速获得它。您能提供给我或示例的链接吗?提前致谢。

    Dim dirInfo As New DirectoryInfo(RootPath)
    Dim files As FileInfo() = dirInfo.GetFiles("*.doc", SearchOption.TopDirectoryOnly)

2 个答案:

答案 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文件。如果这是您的下一个问题,请告诉我,我可以帮忙回答这个问题。