2

假设我有一个目录“C:\Test”,其中包含三个文件:

A23456789.txt
A1.txt
G 5.txt

我运行这个命令:

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

返回所有三个文件。

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

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

4

2 回答 2

3

我认为最好的方法是从 LINQ 中删除过滤GetFiles器并使用 LINQ 将其过滤掉,您可以在其中拥有更多控制权:

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

或一些等价物。

于 2012-06-09T14:17:43.657 回答
2

这使用 LINQ:

Dim FileArr = IO.Directory.GetFiles("C:\Test", "*.txt", SearchOption.AllDirectories). _
    Where(Function(s) s Like "*1.txt")
于 2012-06-09T17:06:27.330 回答