![]() |
|
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]()
|
|
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: нет Всего: 110 |
привет.
есть необходимость получать список файлов новее некоторой даты. желательно это сделать максимально быстро. возможно, при использовании WINAPI можно закодить что-то более оптимальное чем перебор всех файлов. сейчас, для решения это задачи используется гнутая утилита find с ключиком '-newer some_file'. для сканирования необходимого дерева требуется 2-5 минут, что невероятно долго. спасибо. |
|||
|
||||
| xvr |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 40 Всего: 223 |
Для поиска в Win используется FindFirstFile[Ex]. Она не умеет искать по дате. Но можно ускорить процесс поиска, если проверять дату последней модификации на директориях и не ходить в них, если у них дата раньше интересующей (на FAT может не сработать - не помню, обновляется ли у нее дата на директории)
|
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: нет Всего: 110 |
а если изменяется/создается файл в этой директории, дата ее модификации тоже изменяется? а если файл в поддиректории? |
|||
|
||||
| KaZepKa |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 37 Регистрация: 29.10.2011 Репутация: нет Всего: нет |
у меня на 7рке на нтфс дата у директории не меняется
точней меняется только у папки в которой лежит файл, а уровнем выше все как было Это сообщение отредактировал(а) KaZepKa - 18.9.2012, 19:03 |
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: нет Всего: 110 |
||||
|
||||
| xvr |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 40 Всего: 223 |
Увы да - не меняет, хотя по идее должно
А надо найти именно файлы новее некоторой даты, или отслеживать модификации? Для второго есть спец. функции в WinAPI |
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: нет Всего: 110 |
||||
|
||||
| xvr |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 40 Всего: 223 |
Оно может отвалится только если программа, которая его запрашивала, упадет. А так обычные функции работы с файлами, нечему там отваливаться смотрите ReadDirectoryChangesW Ну и еще Change Journals для полноты картины |
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: нет Всего: 110 |
||||
|
||||
| feodorv |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2214 Регистрация: 30.7.2011 Репутация: 9 Всего: 45 |
А таких немного. Основной - изменений может быть слишком много, и тогда приёмный буфер может переполниться. Если файловое дерево находится на сетевом компе, то сеть может отвалиться. В таких случая придётся начинать сначала - полное пересканирование и заказ уведомлений по-новой. -------------------- Напильник, велосипед, грабли и костыли - основные инструменты программиста... |
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: нет Всего: 110 |
это что такое? почему он может переполняться? все происходит на локальной машине. и да, список новых файлов мне нужно получать запуская стороннюю программу из скриптов. т.е. функционал отслеживания я компилю как отдельную тулзу. |
|||
|
||||
| feodorv |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2214 Регистрация: 30.7.2011 Репутация: 9 Всего: 45 |
-------------------- Напильник, велосипед, грабли и костыли - основные инструменты программиста... |
|||
|
||||
![]()
|
| Правила форума "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. |