To zachowanie Win32 API (FindFirstFile
), które znajduje się pod Tobą pod GetFiles()
.
Musisz wykonać własne filtrowanie, jeśli musisz użyć GetFiles()
. Na przykład:
GetFiles("*", searchOption).Where(s => s.EndsWith(".sbs",
StringComparison.InvariantCultureIgnoreCase));
lub skuteczniejszego:
EnumerateFiles("*", searchOption).Where(s => s.EndsWith(".sbs",
StringComparison.InvariantCultureIgnoreCase));
Należy pamiętać, że używam StringComparison.InvariantCultureIgnoreCase
do czynienia z faktem, że nazwy plików Windows są wielkości liter.
Jeśli wydajność jest problemem, to znaczy jeśli wyszukiwanie ma przetwarzać katalogi z dużą liczbą plików, wówczas wydajniejsze jest dwukrotne wykonanie filtrowania: jeden raz w rozmowie z numerem GetFiles
lub EnumerateFiles
, a jeden raz w celu wyczyszczenia niechciane nazwy plików. Na przykład:
GetFiles("*.sbs", searchOption).Where(s => s.EndsWith(".sbs",
StringComparison.InvariantCultureIgnoreCase));
EnumerateFiles("*.sbs", searchOption).Where(s => s.EndsWith(".sbs",
StringComparison.InvariantCultureIgnoreCase));
Nie można (przynajmniej z GetFiles/GetDirectories). Jest to "ograniczenie" wzorca wyszukiwania. Powinieneś iterować wyniki i filtrować ręcznie te, które chcesz. – varocarbas
również przyjrzyj się temu: http://msdn.microsoft.com/en-us/library/wz42302f(v=vs.110).aspx –
możliwy duplikat [Exact file extension match with GetFiles()?] (http://stackoverflow.com/questions/5573063/exact-file-extension-match-with-getfiles) – Borja