Форум: "Начинающим";
Текущий архив: 2009.04.19;
Скачать: [xml.tar.bz2];
ВнизДоступ к файлу Найти похожие ветки
← →
mahab © (2009-03-03 18:43) [0]Привет. "Запил" такой:Отслеживаю изменения в каталогах используя ф-ю ReadDirectoryChangesW с фильтром FILE_NOTIFY_CHANGE_LAST_WRITE, т.к. по идее это сообщение появится после того, как программа, которая записывает в него закроет его (по крайней мере в статье Александра Панова - Изучение простейших приемов работы с файлами и потоками на примере программы «Монитор каталогов» написано, что FILE_NOTIFY_CHANGE_SIZE сигнализирует об изменении размеров файлов. Операционная система определяет, что размер файла изменился, только если он закрыт.) Но к моему великому сожалению, получить доступ к этому файлу после получения сообщения у меня не получается - IDE говорит: "ОН ЗАНЯТ ДРУЖЕ!".
Если я не прав, пожалуйста скажите в чем. Я решил пойти по др. пути и дождаться пока сторонняя программа не освободит его. Но хочу сделать это с помощью WaitForSingleObject, но не знаю какой объект взять сигнальным и вообще возможно ли это. Иммитирую запись файла Paintом но какая программа будет записывать файлы в будующем не знаю, поэтому передать её хендл не могу.
← →
Rouse_ © (2009-03-03 20:41) [1]
> написано, что FILE_NOTIFY_CHANGE_SIZE сигнализирует об изменении
> размеров файлов. Операционная система определяет, что размер
> файла изменился, только если он закрыт
MSDN думает о данном флаге иначе :)Any file-size change in the watched directory or subtree causes a change notification wait operation to return. The operating system detects a change in file size only when the file is written to the disk. For operating systems that use extensive caching, detection occurs only when the cache is sufficiently flushed.
← →
mahab © (2009-03-03 20:47) [2]Мне кажется это то же самое только др. словами (и еще по английски :)). Если нет пожалуйста поясни
← →
Игорь Шевченко © (2009-03-03 21:24) [3]Я бы пытался открыть файл в режиме запрета совместного доступа на запись. Не получилось - ждал бы и снова пытался.
← →
mahab © (2009-03-03 21:30) [4]Во всех режимах перепробовал - не дает доступа. Да и фиг с ним. А вот насчет WaitForSingleObject что-нибудь можно сделать?
← →
mmelik © (2009-03-04 01:37) [5]А попробуйте просто с определенным интервалом времени сканировать нужную вам папку и составлять список находящихся в ней файлов и их размеров. А при последующем сканировании делайте сверку по кол-ву и размеру файлов в этом каталоге и так до тех пор пока результат последнего и предпоследнего сканирования не совпадет. Это и будет означать, что файлы полностью записаны и с ними уже можно что-то делать.
Второй вариант: вам никто не мешает скопировать нужный файл в другое место и там получить к нему доступ.
← →
Riply © (2009-03-04 07:54) [6]> [2] mahab © (03.03.09 20:47)
> Мне кажется это то же самое только др. словами (и еще по английски :)).
Что-то мне не удалось в приведенной Rouse_`ом цитате, найти "размер файла изменился, только если он закрыт".
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2009.04.19;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.066 c