Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# EnumerateFiles与EnumerateDirectory搜索模式_C#_Io - Fatal编程技术网

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