当我搜索以第一结尾的文件时出现问题

时间:2018-07-15 09:03:58

标签: vb.net

我有一个充满文件的文件夹,它们的名称看起来像这样...

FileA1.ext
FileA2.ext
FileA3.ext
FileA4.ext
FileA5.ext
FileA6.ext

FileB1.ext
FileB2.ext
FileB3.ext
FileB4.ext
FileB5.ext
FileB6.ext

FileC1.ext
FileC2.ext
FileC3.ext
FileC4.ext
FileC5.ext
FileC6.ext

假设我要搜索并查找每个以数字2结尾的.ext文件。在代码中使用ListBox和“ For Each”来表示,这个...

For Each FoundFile As String In My.Computer.FileSystem.GetFiles(_Path, FileIO.SearchOption.SearchAllSubDirectories, "*2.ext")
    ListBox1.Items.Add(FoundFile)
Next

但是,如果我在ListBox中搜索每个以数字1结尾的文件,我还会看到以数字5和6结尾的文件!而这仅发生在数字1上!!!有想法吗?

1 个答案:

答案 0 :(得分:3)

这是一个已知的问题。这就是微软所说的:

  

由于此方法将同时检查8.3文件名格式和长文件名格式的文件名,因此类似于“ * 1 * .txt”的搜索模式可能会返回意外的文件名。例如,使用搜索模式“ * 1 * .txt”将返回“ longfilename.txt”,因为等效的8.3文件名格式为“ LONGFI〜1.TXT”。

来自:https://msdn.microsoft.com/en-us/library/wz42302f(v=vs.110).aspx


我的建议

尝试用问号(?)替换星号(*)

 FileIO.SearchOption.SearchAllSubDirectories, "File?1.ext")

修改

如果文件名的后缀不同,则可以尝试以下操作:

FileIO.SearchOption.SearchAllSubDirectories, "*1?ext")

我不确定这是否会欺骗解析器,但是值得尝试一下。