Есть ли способ найти количество файлов определенного типа без необходимости циклического преобразования всех результатов в каталог Directory.GetFiles() или аналогичный метод? Я ищу что-то вроде этого:Найти количество файлов с определенным расширением, во всех подкаталогах
int ComponentCount = MagicFindFileCount(@"c:\windows\system32", "*.dll");
Я знаю, что я могу сделать рекурсивную функцию для вызова Directory.GetFiles, но было бы гораздо чище, если бы я мог бы сделать это без всякой итерации.
EDIT: Если это невозможно сделать без повторения и повторения себя, какой был бы лучший способ сделать это?
Это имеет массовый выпуск производительности с большим количеством файлов. – 2010-01-29 17:21:42
@Aim - Можете ли вы (или кто-либо еще) количественно определить ваше заявление? Насколько медленной является «массовая производительность»? Сколько стоит «большое количество файлов»? Решение Jon работает для меня, но я хотел бы знать, когда/как это может стать проблематичным. – Dhaust 2010-08-19 04:13:14
@DavidHAust Причина, заключающаяся в том, что метод `` GetFiles` (http://msdn.microsoft.com/en-us/library/07wt70x2.aspx) будет реализовывать * полный * список файлов, находящихся в каталоге. Предпочтительным способом вызова является [`Directory.EnumerateFiles`] (http://msdn.microsoft.com/en-us/library/dd383571.aspx), поскольку он будет передавать файлы обратно (через` yield`-like механизм), поскольку основной вызов ОС дает результаты обратно. – casperOne 2011-12-10 20:26:55