使用 c# GetDirectories 在搜索目录下立即检索文件夹。该代码适用于搜索的所有其他目录,但单个目录除外。具体来说,GetDirectories 返回两个不同的文件夹,一个包含搜索模式,而另一个不包含搜索模式。
通配符搜索模式*43*
在我的示例中。
几乎所有我能想到的都试过了。
奇怪的是,如果我更改“WINCE_TEST_IMAGE_41”文件夹名称的任何一个字符的大小写,则返回与(再次)GetDirectories
搜索模式匹配的预期(和正确)单个目录。"*43*"
例如,将 更改"C"
为...然后返回"c"
包含...的单个目录43
设置:
我安装了 .NET Framework SDK 4.8(截至 2019 年 9 月 3 日的最新安装)。
1. 创建文件夹“C:\Temp\WINCE_OS_IMAGES”
2. 在文件夹中创建子文件夹:
* “WINCE_TEST_IMAGE_40”
* “WINCE_TEST_IMAGE_41”
* “WINCE_TEST_IMAGE_42”
* “WINCE_TEST_IMAGE_43”
* “WINCE_TEST_IMAGE_44”。
这样目录结构就是:
C:\温度 \WINCE_OS_IMAGES \WINCE_TEST_IMAGE40 \WINCE_TEST_IMAGE41 \WINCE_TEST_IMAGE42 \WINCE_TEST_IMAGE43 \WINCE_TEST_IMAGE44
代码:
v
是该方法的参数输入,因此我分配了一个值来帮助重现该问题。
string v = "43";
string[] dirs2 = Directory.GetDirectories(@"C:\Temp\WINCE_OS_IMAGES", "*" +
v + "*", SearchOption.TopDirectoryOnly);
foreach (string str in dirs2)
{
Console.WriteLine(str);
}
预期:
GetDirectories
语句仅返回以 . 结尾的目录"43"
。
实际:
GetDirectories 语句返回两个目录,一个以 . 结尾,"41"
另一个以"43"
.