"Przekopywanie" dysku w poszukiwaniu plików

0

Witam.
Poszukuję optymalnej procedury do "przekopywania" dysku w poszukiwaniu plików która zwracała by ścieżki do plików (i można ograniczyć się do danego rozszerzenia).
Dla czego mówię optymalna (jest pełno w google takich funkcji) bo te są zbyt wolne (windowsowy robi to szybciej)

0

Dlatego, że korzysta z indeksu, który cały czas aktualizuje.

Poza tym, przeszukiwanie dysku w poszukiwaniu tylko jednej maski jest szybkie.

Teoretycznie jest jeszcze możliwość bardzo szybkiego szukania na podstawie informacji z MFT partycji, ale tego nie wiem jak wykorzystać.

0

ja uzywam takien funkcji... znalazłem ją kiedyś w necie:

function FindFiles(const Path, Mask: string; IncludeSubDir: boolean): integer;
var
 FindResult: integer;
 SearchRec : TSearchRec;
begin
 result := 0;

 FindResult := FindFirst(Path + Mask, faAnyFile - faDirectory, SearchRec);
 while FindResult = 0 do
 begin
   form1.scombobox9.Items.Add(path);   {  <<<<<<<<<<<   tutaj wklepujesz co ma robić z znalezionym plikiem, w moim przypadku dodaje ścieżkę do cb }
   result := result + 1;

   FindResult := FindNext(SearchRec);
 end;
 FindClose(SearchRec);

 if not IncludeSubDir then
   Exit;

 FindResult := FindFirst(Path + '*.*', faDirectory, SearchRec);
 while FindResult = 0 do
 begin
   if (SearchRec.Name <> '.') and (SearchRec.Name <> '..') then
     result := result +
       FindFiles (Path + SearchRec.Name + '\', Mask, TRUE);

   FindResult := FindNext(SearchRec);
 end;
FindClose(SearchRec);
end; 

jak użyć? To proste:

 FindFiles('C:\', '*.dat', true); 

Przeszukiwanie dysku C w moim wypadku to 4-6 sek.
Minus funkcji? Szuka tylko w widocznych plikach.
Dodatkowo zwraca ilość znalezionych plików ^^

//edit
nazwe pliku pobierasz przez SearchRec.Name

0

Takie funkcje jak wyżej to jakieś dzieci piszą...

Prawdziwa funkcja szukająca jest zoptymalizowana, nie pracuje na komponentach wizualnych, szuka we wszystkich folderach (także z atrybutami ukrytymi) i odnajduje pliki według wielu parametrów:

  • maski szukające pliki
  • maski wykluczające pliki
  • maski wykluczające foldery
  • maski wykluczające atrybuty

1 użytkowników online, w tym zalogowanych: 0, gości: 1