我有一个充满文件的文件夹,它们的名称看起来像这样...
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上!!!有想法吗?
答案 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")
我不确定这是否会欺骗解析器,但是值得尝试一下。