Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.04.19;
Скачать: CL | DM;

Вниз

Доступ к файлу   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.034 c
15-1234818834
AlexDan
2009-02-17 00:13
2009.04.19
Уравнения затухающих волн..


15-1234859394
Ega23
2009-02-17 11:29
2009.04.19
знатоки JavaScript, посоветуйте


4-1208534442
Незнайка
2008-04-18 20:00
2009.04.19
работа с The Bat!


2-1235823045
huge
2009-02-28 15:10
2009.04.19
Сохранение в файл объекта


15-1235035785
Kerk
2009-02-19 12:29
2009.04.19
Нижегородцы!