阻止Directory.GetFiles()搜索短文件名

时间:2012-06-09 14:13:56

标签: vb.net file pattern-matching filenames wildcard

假设我有一个目录'C:\ Test',里面有三个文件:

A23456789.txt
A1.txt
G 5.txt

我运行这个命令:

Dim FileArr = Directory.GetFiles("C:\Test", "*1.txt", SearchOption.AllDirectories)

返回所有三个文件。

我知道这是设计的,.NET也会搜索8.3短文件名 但有没有办法覆盖它并只搜索实际的文件名?

当然,在这个时代,必须有一个功能来做到这一点。或者我必须自己写吗? 我希望搜索功能与Windows资源管理器具有相同的行为,以保持一致性。

2 个答案:

答案 0 :(得分:3)

我认为最好的方法是从GetFiles中删除过滤器并使用LINQ过滤掉它,在那里你可以更多地控制:

Dim FileArr = Directory.GetFiles("C:\Test", "*.txt", SearchOption.AllDirectories)
Dim filtered = From f In FileArr Where Path.GetFileName(f).EndsWith("1.txt")

或等同的。

答案 1 :(得分:2)

这使用LINQ:

Dim FileArr = IO.Directory.GetFiles("C:\Test", "*.txt", SearchOption.AllDirectories). _
    Where(Function(s) s Like "*1.txt")