Directory.GetFiles(..) 与模式 *.???返回有趣的结果
本文关键字:返回 结果 GetFiles 模式 Directory | 更新日期: 2023-09-27 18:36:15
我使用以下代码:
var di = new DirectoryInfo("path/to/dir");
var matchingFiles = di.GetFiles("*.???);
正如预期的那样,像这样的文件
- 文件.bat
- 测试.1.xml
- 答.txt.txt
被退回。但是,有一些有趣的结果。正如MS文档所提到的,也会搜索短名称。我还找到了有关在 .NET 4+ 中工作的点选择器的信息。我仍然看不出这解释了以下结果:
- 文件1.xml.2
- afilewithoutextension
Q1:如何解释这个结果。
Q2:如何匹配模式*。实现 [3 个任意字符]。
Q2)你可以改用LINQ
和Path
类:
var files = Directory.EnumerateFiles("path/to/dir", "*.*")
.Where(file => Path.GetExtension(file).TrimStart('.').Length == 3);
如何解释这个结果。
正如您所注意到的,短名称总是被搜索;并且它们总是有一个三个字符的扩展名(即使这些字符是空格)。
如何匹配模式*。实现 [3 个任意字符]。
检查您的代码(例如,使用正则表达式)。MS-DOS 通配符非常有限,向后兼容性要求使它们更弱;它们实际上只对特定匹配有用,而不是常规过滤。