C# EnumerateFiles与EnumerateDirectory搜索模式
我遇到了一件事。 代码如下:C# EnumerateFiles与EnumerateDirectory搜索模式,c#,io,C#,Io,我遇到了一件事。 代码如下: var searchPattern = @"??????"; var path = "C:\Users\MyUser\Folder"; IEnumerable<string> file = Directory.EnumerateFiles(path, searchPattern); IEnumerable<string> dir = Directory.EnumerateDirectories(path, searchPattern
var searchPattern = @"??????";
var path = "C:\Users\MyUser\Folder";
IEnumerable<string> file = Directory.EnumerateFiles(path, searchPattern);
IEnumerable<string> dir = Directory.EnumerateDirectories(path, searchPattern);
根据这一点,字符“”应该表示该位置的零或一个字符。因此,我希望包含a
和b
的目录和文件应该是a.txt
和b.txt
但是,我的文件
变量只包含空集合。
为什么呢?把
“?.*”
放在文件中(一个字母名称,任何扩展名),我想它不应该这样使用。为什么需要这个?我正在尝试创建自己的EnumerateFiles
方法(不要问为什么:),但这是我没有预料到的行为。它不准确,不是零。通配符的工作方式可以追溯到很长很长一段时间,可以追溯到DEC操作系统,该操作系统在功率非常小的机器上运行。您往往需要“*.*”
并使用regexp进行筛选。此外,还要注意文件系统上遗留的短名称支持,目前默认情况下仍处于启用状态。像“*.doc”
这样的模式不仅可以查找.doc文件,还可以查找“foo.docx”和“foo.doc”。使用“*.*”
和自己筛选的更多原因。将“?.*”
放在文件中(一个字母名称,任何扩展名),我想这样使用是不应该的。为什么需要这个?我正在尝试创建自己的EnumerateFiles
方法(不要问为什么:),但这是我没有预料到的行为。它不准确,不是零。通配符的工作方式可以追溯到很长很长一段时间,可以追溯到DEC操作系统,该操作系统在功率非常小的机器上运行。您往往需要“*.*”
并使用regexp进行筛选。此外,还要注意文件系统上遗留的短名称支持,目前默认情况下仍处于启用状态。像“*.doc”
这样的模式不仅可以查找.doc文件,还可以查找“foo.docx”和“foo.doc”。更多使用“*.*”
和自己筛选的原因。
a.txt
b.txt
a
b