Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Теория программирования > Алгоритмы
Перезагрузить страницу Быстрый рекурсивный поиск файлов
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
Gloomy Gloomy вне форума
Member
 
Сообщений: 122
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 04.07.2003
По умолчанию Быстрый рекурсивный поиск файлов - 04.07.2003, 08:45

Очень часто задаваемый вопрос. Вот пример реализации на Delphi:
Код:
procedure ScanDir(StartDir, Mask: String; List: TStrings);
var
 SearchRec: TSearchRec;
begin
  if Mask = '' then Mask:= '*.*';
  if StartDir[Length(StartDir)] <> '' then StartDir := StartDir + '';
  if FindFirst(StartDir+Mask, faAnyFile, SearchRec) = 0 then
  begin
   repeat
    Application.ProcessMessages;
     if (SearchRec.Attr and faDirectory) <> faDirectory then
      List.Add(StartDir + SearchRec.Name)
     else if (SearchRec.Name <> '..') and (SearchRec.Name <> '.') then
      ScanDir(StartDir + SearchRec.Name + '',Mask,List);
    until FindNext(SearchRec) <> 0;
    FindClose(SearchRec);
  end;
end;
Пример использования:
Код:
procedure TForm1.Button1Click(Sender: TObject); 
var 
   list: TStrings; 
begin 
   list:= TStringList.Create; 
   ScanDir('c:', '*.txt', list); 
   Memo1.Lines:= list; 
   list.Free; 
end;
Надо отметить, что поиск ОЧЕНЬ БЫСТРЫЙ. Гораздо быстрее чем встроенный Виндовый
Ответить с цитированием
  (#2 (permalink)) Старый
Olesya Olesya вне форума
Member
 
Сообщений: 1,485
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 11.06.2002
По умолчанию Re: Быстрый рекурсивный поиск файлов - 04.07.2003, 11:49

Гораздо быстрее чем встроенный Виндовый..
На сколько быстре?
Ответить с цитированием
  (#3 (permalink)) Старый
Gloomy Gloomy вне форума
Member
 
Сообщений: 122
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 04.07.2003
По умолчанию 04.07.2003, 15:30

Чисто по секундомеру - раза в 1,5 К примеру у меня на винте 13 145 файлов. Стандартный поиск тратит на их поиск порядка 17-19 секунд. А этот алгоритм - не более 7-8
Ответить с цитированием
  (#4 (permalink)) Старый
Olesya Olesya вне форума
Member
 
Сообщений: 1,485
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 11.06.2002
По умолчанию 04.07.2003, 15:38

Хм.. Впечатляет
Ответить с цитированием
  (#5 (permalink)) Старый
Влад Влад вне форума
Специалист
 
Сообщений: 3,884
Сказал(а) спасибо: 1
Поблагодарили 25 раз(а) в 25 сообщениях
Регистрация: 27.06.2002
Адрес: Санкт-Петербург
По умолчанию 04.07.2003, 16:31

А ты не пробовал в процедуре "быстрого поиска файлов" загружать из ресурса и хранить для каждого файла его иконку, а также хранить в записи не только имя файла, но и его тип, дату/время и т.п., как это делает Эксплорер?

Сам-то рекурсивный алгоритм поиска более чем тривиален, вряд ли парни из M$ до него не додумались...
Ответить с цитированием
Ads.
  (#6 (permalink)) Старый
Gloomy Gloomy вне форума
Member
 
Сообщений: 122
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 04.07.2003
По умолчанию 04.07.2003, 18:56

Раздел вроде бы называется "Алгоритмы"? Вот я и привел пример часто спрашиваемого алгоритма. А наворачивать его (иконки извлекать, размер, датувремя и пр.) можно сколько угодно.
Главное - понять сам принцип поиска, для чего, наверное, и существует этот раздел
Ответить с цитированием
  (#7 (permalink)) Старый
Влад Влад вне форума
Специалист
 
Сообщений: 3,884
Сказал(а) спасибо: 1
Поблагодарили 25 раз(а) в 25 сообщениях
Регистрация: 27.06.2002
Адрес: Санкт-Петербург
По умолчанию 04.07.2003, 19:29

Согласен. К самому алгоритму претензий не имею. А замечание относилось только к утверждению "ОЧЕНЬ БЫСТРЫЙ. Гораздо быстрее чем встроенный Виндовый ".
Ответить с цитированием
  (#8 (permalink)) Старый
XKiller XKiller вне форума
Member
 
Сообщений: 197
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 23.07.2002
По умолчанию 04.11.2003, 00:13

Вот мне очень интересно, какие папки будут просматриваться в приведенном примере? Согласно маске "*.txt"?
Я думаю в каталоге WINNT он искать не будет.
Ответить с цитированием
  (#9 (permalink)) Старый
ja_far ja_far вне форума
Новичок
 
Сообщений: 1
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 24.10.2015
По умолчанию 24.10.2015, 23:20

12 лет уже прошло, но тем не менее меня интересует как этот алгоритм корректно использовать для быстрого поиска файлов по нескольким маскам одновременно. Подскажите если не трудно! Нужен быстрый поиск но чтобы можно было к примеру 10 расширений файлов задать.
Ответить с цитированием
  (#10 (permalink)) Старый
Rius Rius вне форума
Программист
 
Аватар для Rius
 
Сообщений: 7,451
Сказал(а) спасибо: 22
Поблагодарили 944 раз(а) в 928 сообщениях
Регистрация: 27.08.2004
Адрес: Russian Federation
По умолчанию 25.10.2015, 01:30

Не вижу в этом "алгоритме" ничего, что предпологало бы в нём "очень быстрый".
Imho быстрее поиска в памяти после предварительной индексации ничего нет.
Ответить с цитированием
Ads
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Быстрый поиск в базах данных Builder6 Mirra88 C++ Builder 6 02.08.2011 10:08
Поиск файлов на трекерах tatyana-L Любые вопросы от новичков 6 23.07.2011 23:53
поиск текстовых файлов bolonka Pascal 1 05.11.2009 06:26
Быстрый поиск в базе данных Homer Simpson .NET 1 09.11.2006 12:44
Поиск файлов по содержимому ic75 C++ Builder 7 26.10.2006 10:51
Поиск по форуму рекурсивный обход дерева Игнат С/С++ 5 29.05.2006 12:40
Быстрый поиск слова saaska Алгоритмы 2 28.05.2006 00:37
Быстрый поиск файлов Dian Зацените! 39 17.05.2006 14:56
Каким методом организовать быстрый поиск в ADOTable ГС ТОФ Delphi 2 02.10.2005 15:13
Быстрый поиск по структурированному файлу Aist++ Алгоритмы 9 27.06.2005 10:21
Поиск файлов с системе Кошмар Юмор 4 31.05.2005 07:13
Как организовать быстрый поиск в поле Name через Edit Anonymous C++ Builder 5 01.06.2004 00:00



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов