我有一些用于获取目录中文件的代码,这很简单
foreach (var Totalfile in new DirectoryInfo(rootfolder).GetFiles("*Totals*.csv", SearchOption.TopDirectoryOnly))
这些文件的名称如下:
Totals.CSV142344
Totals.CSV142409
Totals.CSV142433
Totals.CSV142501
Totals.CSV142528
我的问题是它没有拾取最后一个文件。
我通过将其替换为固定的代码:
foreach (var Totalfile in new DirectoryInfo(rootfolder).GetFiles("*Totals*.csv*", SearchOption.TopDirectoryOnly))
说获取包含Totals和.csv的任何文件,以及.csv之后的任何文件。
我不明白的是为什么它得到了前四个文件,却没有得到最后四个文件。
我以为原始文件不会拾取任何文件?
显然,GetFiles
遵循说dir
命令中实现的模式匹配逻辑。
因为此方法将同时检查8.3文件名格式和长文件名格式的文件名,所以类似于的搜索模式
"*1*.txt"
可能会返回意外的文件名。例如,使用搜索模式"*1*.txt"
返回“ longfilename.txt”,因为等效的8.3文件名格式为“ LONGFI〜1.TXT”。
正如@GSerg指出的,您的某些文件具有匹配的8.3名称。
dir /x *Totals*.csv*
2020-01-31 09:33 0 TOTALS~1.CSV Totals.CSV142344
2020-01-31 09:33 0 TOTALS~2.CSV Totals.CSV142409
2020-01-31 09:33 0 TOTALS~3.CSV Totals.CSV142433
2020-01-31 09:33 0 TOTALS~4.CSV Totals.CSV142501
2020-01-31 09:33 0 TO5404~1.CSV Totals.CSV142528
尝试更改模式Totals.csv*
以匹配所有文件。