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