Поиск большого списка файлов

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
kibernetics
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 945
Зарегистрирован: 03.05.2006 (Ср) 13:31
Откуда: Minsk

Поиск большого списка файлов

Сообщение kibernetics » 29.03.2009 (Вс) 11:05

Есть список около тысячи файлов, их нужно найти в указанной директории.
Что я делаю, беру поочерёдно со списка по одному имени и ищу по указанному пути с рекурсией.
Конечно, времени занимает порядочно. Так вот я думаю, а может есть какой-то способо искать сразу весь пакет в директории?
Т.е. заходим на с:\ перебираем файлы и сраниваем с каждым из списка, потом в с:\programfiles\, перебираем каждый, тоже сравниваем с каждым из списка... и т.д.
Или по времязатратам получится тоже самое?

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: Поиск большого списка файлов

Сообщение alibek » 29.03.2009 (Вс) 11:50

Попробуй.
Зависит от количества искомых имен и от количества файлов.
Может оказаться и быстрее. Предполагаю, что так и будет.
Lasciate ogni speranza, voi ch'entrate.

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: Поиск большого списка файлов

Сообщение iGrok » 29.03.2009 (Вс) 11:56

Первое, что приходит в голову - отсортировать список поиска по алфавиту, отсортировать полученный список файлов по алфавиту, а дальше пробегаться сверху вниз по спискам, пропуская лишнее. Потом так же по директориям. Скорей всего действительно быстрее получится.
label:
cli
jmp label

Alec
Бывалый
Бывалый
 
Сообщения: 275
Зарегистрирован: 31.08.2008 (Вс) 0:15
Откуда: Ростов-на-Дону

Re: Поиск большого списка файлов

Сообщение Alec » 29.03.2009 (Вс) 19:51

Может тогда сразу создать один список файлов, включая туда и находящиеся в поддиректориях. А потом уже сортировать.
Иногда лучше вовремя остановиться...
И начать заново!

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Re: Поиск большого списка файлов

Сообщение RayShade » 30.03.2009 (Пн) 10:08

Не покатит. Имена файлов могут дублироваться.
I don't understand. Sorry.

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: Поиск большого списка файлов

Сообщение iGrok » 30.03.2009 (Пн) 11:42

Ну в теории, можно поступить, как советует Alec, но хранить и сортировать пары "полный путь - имя файла". Сориторвать по имени, естественно. И искать тоже.
label:
cli
jmp label

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Re: Поиск большого списка файлов

Сообщение RayShade » 30.03.2009 (Пн) 11:50

Вообще, список можно засунуть в XML, потом на основании содержимого каталога сделать XPATH запрос и вуаля! :) У нас все готово :)
I don't understand. Sorry.

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: Поиск большого списка файлов

Сообщение iGrok » 30.03.2009 (Пн) 11:52

RayShade писал(а):Вообще, список можно засунуть в XML, потом на основании содержимого каталога сделать XPATH запрос и вуаля! :) У нас все готово :)

"XML' s like a violence..." ? :D
label:
cli
jmp label

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Re: Поиск большого списка файлов

Сообщение RayShade » 30.03.2009 (Пн) 12:29

Да да :) У меня весеннее обострение и я буду его везде советовать поэтому :)
I don't understand. Sorry.

Alec
Бывалый
Бывалый
 
Сообщения: 275
Зарегистрирован: 31.08.2008 (Вс) 0:15
Откуда: Ростов-на-Дону

Re: Поиск большого списка файлов

Сообщение Alec » 30.03.2009 (Пн) 21:32

RayShade писал(а):Не покатит. Имена файлов могут дублироваться.

iGrok писал(а):хранить ... пары "полный путь - имя файла".

Вообще-то именно это и предполагалось. Иначе смысла нет - даже у единственного найденного файла нужно будет определять путь и опять в поиск...
Иногда лучше вовремя остановиться...
И начать заново!

kibernetics
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 945
Зарегистрирован: 03.05.2006 (Ср) 13:31
Откуда: Minsk

Re: Поиск большого списка файлов

Сообщение kibernetics » 31.03.2009 (Вт) 1:52

Я сейчас пользуюсь функцией FindNextFile, она просто перебором берёт каждый файл из директории и сравнивает с искомым.
А есть вроде ещё функция, чтото вроде PathMatchSpec, но точно не помню, давно натыкался.
Так вот через эту функцию, файл "сразу" проверяется, есть он в директории или нет. Т.е. нет необходимости парсить весь каталог,
ведь, имя файла известно конкретно. Главное, получить списки каталогов.

Xcode
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 131
Зарегистрирован: 31.10.2008 (Пт) 8:12
Откуда: Pavlodar

Re: Поиск большого списка файлов

Сообщение Xcode » 31.03.2009 (Вт) 14:16

PathMatchSpec явно не то. вот описание:
Searches a string using a DOS wild card match type. Returns TRUE if the string matches, or FALSE otherwise.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот и гости: 38

    TopList