Вниз
Скачать: CL | DM;

Как проверить занят ли файл или нет?   Найти похожие ветки 

 
Jack ©   (2003-08-11 14:52) [0]

Монитор каталогов должн при появлении файлов передовать их на обработку. Но при использовании функций FindFirstChangeNotification/FindNextChangeNotification невозможно определить событие, когда файл полностью скопирован в директорию. Как можно решить эту проблему?


 
panov ©   (2003-08-11 15:06) [1]

FILE_NOTIFY_CHANGE_LAST_WRITE
Any change to the last write-time of files in the watched directory or subtree causes a change notification wait operation to return. The operating system detects a change to the last write-time 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.

Пробовал?


 
Jack ©   (2003-08-11 15:55) [2]

Не правильно описал ситуацию. В директорию может копироваться несколько файлов одновременно и из разных источников. GhangeNotification не возвращает имени файла - источника события. Поэтому просматриваю каталог с помощью FindFirst/FindNext и получаю список файлов, среди которых есть еще открытые. Как открытые файлы можно исключить из списка?


 
panov ©   (2003-08-11 16:32) [3]

К сожалению, таким способом не сможешь определит завершение записи файла.

Попробуй воспользоваться ReadDirectoryChangesW, но только в ОС не ниже WinNT...


 
panov ©   (2003-08-11 16:36) [4]

Можно пытаться открывать файл для проверки в эксклюзивном режиме, но это не 100% метод.


 
Jack ©   (2003-08-11 16:52) [5]

В том то и дело... Программа будет работать, вероятнее всего, под Win98.
Ну чтож, будем пробовать...


 
Verg ©   (2003-08-12 08:56) [6]

Сначала файл должен быть ненулевой длины, а затем
попытка переименовать файл самого в себя:

if renamefile(fname, fname) then файл записан полностью else нет.



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.015 c
1-51176
Delphin
2003-10-04 22:12
2003.10.16
Нужен компонент для работы со скинами, или как округлить углы в E


1-51297
Seldon
2003-10-05 22:00
2003.10.16
TPropertyEditor


3-51080
MsGuns
2003-09-25 20:42
2003.10.16
LEFT JOIN


3-51061
Kapitan
2003-09-26 12:55
2003.10.16
нумерация строк


1-51168
ZioN
2003-10-05 16:19
2003.10.16
Char <-> hex




   Наверх