У меня есть некоторый код, предназначенный для получения файлов в каталоге, который достаточно прост
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))
Говоря, получить любые файлы, которые содержат как итоги и .csv, с любым после CSV.
Чего я не понимаю, так это того, почему он получил первые четыре файла, а не нижние.
Я думал, что ни один из файлов не будет подхвачен исходным кодом?
Totals~n.csv
больше не подходят, и вы можете получить только совпадениеTotal*
. Введите,dir /x tot*.*
чтобы увидеть короткие имена. Вы поддерживаетеTotals.csv*
и, возможно, придется фильтровать, чтобы исключить случайные совпадения.Ответы:
Очевидно,
GetFiles
придерживается логики сопоставления с образцом, как это реализовано, скажем, вdir
команде.MSDN
Как указал @GSerg, некоторые из ваших файлов имеют совпадающее имя 8.3.
Попробуйте изменить шаблон на
Totals.csv*
чтобы он соответствовал всем файлам.источник