![]() |
|
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]()
|
|
| DominiK |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 77 Регистрация: 11.3.2007 Где: Россия, Омск Репутация: нет Всего: нет |
Понимаю что тема баянная, но в упор аналогов не нашел.
У кого есть, поделитесь кодом поиска файлов по расширению, на всех дисках,каталогах и подкаталогах. Это сообщение отредактировал(а) DominiK - 28.10.2007, 11:07 |
|||
|
||||
| jonie |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 7 Всего: 118 |
1. получаешь список доступны лог дисков GetLogicalDriveStrings(), GetLogicalDrives(),
2. циклом по ним с получением инфы о них GetDriveType() 3. цикл по жеским дискам + рекурсия на поиск файлов нужного типа (см. пример удаляния папки). все. -------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
| DominiK |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 77 Регистрация: 11.3.2007 Где: Россия, Омск Репутация: нет Всего: нет |
Спасибо! ЗЫ: тема не закрыта. |
|||
|
||||
| DominiK |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 77 Регистрация: 11.3.2007 Где: Россия, Омск Репутация: нет Всего: нет |
UP
|
|||
|
||||
| jonie |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 7 Всего: 118 |
нуу.. в чем проблемы-то расскажи чтоли...
-------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
| SenkraD |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 933 Регистрация: 3.2.2006 Где: Украина::Киев Репутация: 4 Всего: 23 |
DominiK, вот здесь было похожее с коментариями.
Посмотри - может, поможет, а нет - будем думать дальше |
|||
|
||||
| DominiK |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 77 Регистрация: 11.3.2007 Где: Россия, Омск Репутация: нет Всего: нет |
Кидайте еще примеры
Это сообщение отредактировал(а) DominiK - 2.11.2007, 14:38 |
|||
|
||||
| dumb |
|
|||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 27 Всего: 158 |
||||
|
||||
| SenkraD |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 933 Регистрация: 3.2.2006 Где: Украина::Киев Репутация: 4 Всего: 23 |
dumb, согласен - я по просьбе DominiK переделывал(ю) эту вариант
с той ссылки на многопоточный вариат - выиграш в скорость минимальный, разве что GUI не залипает. Вот мои идеи: - Если нужно очень часто и очень быстро искать файлы, то можно написать свой сервис, который в idle-mode будет следить за дисками (отлавливать изминения в файловой системе - удаление, создание, перемещение и ....) и заносить их в свою базу, а программа потом может обращаться к нему, а тот с помощью SQL будет с молниеносной скоростью выгребать данные (здесь и проблема с поиском по маске решается) или напрямую к базе, тогда решится проблема с обменом данных - не придётся писать код для его реализации. Вообщем, это что-то типа службы индексирования у Windows, но эту можно сделать "не срубаемой" плюс она не будет столь напряжна как её Windows аналог (хотя точно не скажу) - Можно использовать службу индексирования Windows, но я не нашёл ни пнужного интерфейса для доступа к ней, ни функций API, которые ищут через неё (вернее, надежду даёт FindFirstFileEx, но я ещё не успел проверить). Минусы этого подхода думаю очевидны - эту службу часто отключают, хотя Windows в своём поиске файлов это как-то решает |
|||
|
||||
| jonie |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 7 Всего: 118 |
с помощью SQL будет с молниеносной скоростьюа не круто для индексирования гонять ADO или подобное?.. используйте другие БД (berkeleyDB как пример)... хотя ваши дела 8) можно и в память все списки гнать.. 8) вы еще SqlServer бд приклеивайте) по мне так это слишком "круто" и излишне.
-------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
| DominiK |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 77 Регистрация: 11.3.2007 Где: Россия, Омск Репутация: нет Всего: нет |
Спасибо всем, вопрос решен
Это сообщение отредактировал(а) DominiK - 25.4.2008, 22:32 |
|||
|
||||
| SenkraD |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 933 Регистрация: 3.2.2006 Где: Украина::Киев Репутация: 4 Всего: 23 |
jonie, не я ADO и в помине не имел, я стороник SQLite. А по поводу излишне,
если очень часто искать нужно и это не какая-то утилитинка , то я думаю это самый лучший вариант - я просто другого не знаю |
|||
|
||||
| Rififi |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1254 Регистрация: 9.3.2008 Репутация: 2 Всего: 36 |
SenkraD,
такая база уже есть, и называется оно WMI. wmi.ExecQuery("SELECT * FROM CIM_DataFile WHERE Name LIKE '%.avi'"); и работает оно совсем не быстро... |
|||
|
||||
![]()
|
| Правила форума "C/C++: Системное программирование и WinAPI" | |
|
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |