Это поведение Win32 API (FindFirstFile
), которое находится под GetFiles()
, отражается на вас.
Вам нужно будет сделать свою собственную фильтрацию, если вы должны использовать GetFiles()
. Например:
GetFiles("*", searchOption).Where(s => s.EndsWith(".sbs",
StringComparison.InvariantCultureIgnoreCase));
Или более эффективно:
EnumerateFiles("*", searchOption).Where(s => s.EndsWith(".sbs",
StringComparison.InvariantCultureIgnoreCase));
Обратите внимание, что я использую StringComparison.InvariantCultureIgnoreCase
, чтобы иметь дело с тем фактом, что имена файлов Windows нечувствительны к регистру.
Если производительность является проблемой, то есть если поиск должен обрабатывать каталоги с большим количеством файлов, то более эффективно выполнять фильтрацию дважды: один раз при вызове GetFiles
или EnumerateFiles
и один раз для очистки нежелательных имен файлов. . Например:
GetFiles("*.sbs", searchOption).Where(s => s.EndsWith(".sbs",
StringComparison.InvariantCultureIgnoreCase));
EnumerateFiles("*.sbs", searchOption).Where(s => s.EndsWith(".sbs",
StringComparison.InvariantCultureIgnoreCase));
person
David Heffernan
schedule
27.11.2013