Member
Статус: Не в сети Регистрация: 24.11.2005 Откуда: Irkutsk
1. Переходим в корневой каталог
2. Получаем список файлов и папок
Далее рекурсивная процедура
3. Читаем имеющиеся файлы и что-то с ними делаем
4. Читаем первый попавшийся в списке каталог
5. Переходим в него.
6. Начинаем с 3 пункта
И все...... Вот исходник на паскале мож поможет
var
CmdName:String;
const
Needfile='*.*';
Procedure FntDir(path:string); {Процедура поиска файлов на диске}
var s:searchrec;
begin
findfirst(path+'\*.*',$10,s);
while doserror=0 do
begin
if ((s.attr and $10)=$10) and (s.name<>'.') and (s.name<>'..') then
fntdir(path+'\'+s.name);
findnext(s);
end;
findfirst(path+'\'+needfile,anyfile,s);{поиск нужного файла}
while doserror=0 do begin
CmdName:=(Path+'\'+s.name);
findnext(s);
end;
end;
end;
Member
Статус: Не в сети Регистрация: 24.11.2005 Откуда: Irkutsk
sk1 писал(а):
после того как я дошел до последнего уровня вложености, как возвратится на один уровень вложености, и продолжить поиск!
см. исходник выше! При использовании рекурсивного прохода после прохождения последнего уровня вложенности процедура сама возвращается на уровень выше...
ЗЫ Почитай литературу по рекурсии.....
При выполнении поиска по всему диску для NTFS обязательно, а для FAT32 желательно исключить из обработки папку "System Volume Information".
Также нелишним будет исключить и папку "RECYCLER".
Для этих папок существуют свои методы доступа, пытаться юзать их обычным поиском не есть хорошо.
Также с учетом среднестатистического количества файлов, которое вполне может достигать десятков тысяч на одном разделе поиск лучше производить в отдельном потоке.
Все ессно ИМХО.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения