Согласно Сайт Microsoft Docs для Directory.EnumerateFiles, параметр шаблона поиска будет соответствовать любому расширению, начинающемуся с указанного шаблона, если оно содержит ровно 3 символа. Однако это не работает с общими файлами, а только с локальными дисками.
Для каталога \\share\folder\
, содержащего один файл с именем file.xlsx
, этот первый фрагмент кода не возвращает его:
public static List<string> GetAllFilesFromDirectory(string directory) =>
new[] { "*.csv", "*.xls", "*.txt" }.SelectMany(ext => Directory.EnumerateFiles(directory, ext)).ToList();
Однако, если я добавлю шаблон *.xlsx
, он вернет его:
public static List<string> GetAllFilesFromDirectory(string directory) =>
new[] { "*.csv", "*.xls", "*.xlsx", "*.txt" }.SelectMany(ext => Directory.EnumerateFiles(directory, ext)).ToList();
Я также проверил это с тем же файлом в каталоге C:\temp
, и он обнаружил, что он вернулся в обоих направлениях.
Это выполняется в консольном приложении .NET Framework 4.7.2.
Я что-то пропустил в шаблоне поиска? Или это не работает с файловыми ресурсами так же, как с локальными дисками? Ожидается ли это?