Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/334.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.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# Directory.GetFiles方法上的searchPattern逻辑_C#_.net_Search - Fatal编程技术网

C# Directory.GetFiles方法上的searchPattern逻辑

C# Directory.GetFiles方法上的searchPattern逻辑,c#,.net,search,C#,.net,Search,我想知道Directory.GetFiles方法上的搜索模式逻辑是什么。我在搜索模式中使用星号通配符。如果我把“*”放在char前面,我不明白在搜索时应用什么样的逻辑 如果我把“*”放在字符的前面,我会得到意想不到的结果,但如果我把它放在字符的后面,它是正确的 这是文件夹中的文件列表、示例代码和结果 字符前面的星号 string _strSearchPattern = "*1"; foreach (string _strFolder in Directory.GetFiles(@"C:\Tem

我想知道Directory.GetFiles方法上的搜索模式逻辑是什么。我在搜索模式中使用星号通配符。如果我把“*”放在char前面,我不明白在搜索时应用什么样的逻辑

如果我把“*”放在字符的前面,我会得到意想不到的结果,但如果我把它放在字符的后面,它是正确的

这是文件夹中的文件列表、示例代码和结果

字符前面的星号

string _strSearchPattern = "*1";
foreach (string _strFolder in Directory.GetFiles(@"C:\Temp\FileList", _strSearchPattern))
Console.WriteLine("{0}", _strFolder);
意外的结果。应该是1。为什么“b_请求”会出现,而“b”为什么不包括在内

字符后面的星号

string _strSearchPattern = "1*";
foreach (string _strFolder in Directory.GetFiles(@"C:\Temp\FileList", _strSearchPattern))
Console.WriteLine("{0}", _strFolder);
这里是预期的结果


是bug还是我想得太多了?

这有点棘手,但不是bug

星号(*)表示该位置的零个或多个字符,问号(?)表示该位置的零个或一个字符

根据:

因为此方法检查8.3文件和 名称格式和长文件名格式,搜索模式类似于 “*1*.txt”可能返回意外的文件名。例如,使用 “*1*.txt”的搜索模式返回“longfilename.txt”,因为 等效的8.3文件名格式为“LONGFI~1.TXT”

在第一种情况下,带有“*1”的搜索路径将匹配以字母1结尾的任何路径,将返回路径1和路径b_请求(使用8.3文件名格式b_Requ~1)


有关8.3文件名的更多信息,请参阅。

谢谢!正如您所说的“b_请求”(使用8.3文件名格式“b_Requ~1”)并与搜索模式匹配,我很清楚我的疑问。如果我使用“dir/x”或“dir/-n”进行检查,我会看到“b_Requ~1”。b_1如何?是否在“8.3格式”下"? 我在目录列表中没有看到任何短文件格式。你能再给我一些信息吗?@yukon,从维基百科链接上看,它说“8.3文件名最多只能包含8个字符”,所以我的理解是,对于长度小于或等于8的文件路径,8.3文件名格式不适用于它们。希望能有帮助。