Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
2-1236095021
mahab
2009-03-03 18:43
2009.04.19
Доступ к файлу


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


15-1234803136
Maaacheba
2009-02-16 19:52
2009.04.19
Получение имени метода


2-1236094545
9899100
2009-03-03 18:35
2009.04.19
Indy письмо


15-1232824237
Unknown user
2009-01-24 22:10
2009.04.19
Работа с потоками в Delphi





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский