Текущий архив: 2005.02.20;
Скачать: CL | DM;
ВнизКак определить, что файл записан на диск полностью Найти похожие ветки
← →
-= Demon =- (2005-02-07 15:12) [0]Добрый день!
Как решить следующую проблему: при появлении в папке файла нужно произвести с ним определенные действия, но при этом файл должен быть уже ПОЛНОСТЬЮ на диске (копирование больших файлов может занимать долгое время). Как отловить именно момент, когда файл ПОЛНОСТЬЮ записан на диск?
Сейчас для мониторинга папки истользую TRxFolderMonitor
← →
Anatoly Podgoretsky © (2005-02-07 15:54) [1]Это определить нельзя, наглядный случай логи.
← →
Юрий Зотов © (2005-02-07 17:12) [2]В цикле пытаться захватить файл в монопольном режиме. Когда получится - записывающая программа уже освободила файл.
← →
Alexander Panov © (2005-02-07 19:26) [3]Юрий Зотов © (07.02.05 17:12) [2]
записывающая программа уже освободила файл.
Это не означаетдля всех случаев жизни, что записывающая программа закончила работать с файлом.
← →
Fay © (2005-02-07 21:14) [4]2 Alexander Panov © (07.02.05 19:26) [3]
>> Это не означаетдля всех случаев жизни, что записывающая программа закончила работать с файлом.
IMHO, означает. Причём именно "для всех случаев жизни".
← →
Alexander Panov © (2005-02-07 21:16) [5]Fay © (07.02.05 21:14) [4]
IMHO, означает. Причём именно "для всех случаев жизни".
Думаю, что для программ, которые записывают файлы кусками, такой метод не сработает.
Пример привел Anatoly Podgoretsky © (07.02.05 15:54) [1]
← →
Fay © (2005-02-07 21:22) [6]2 Alexander Panov © (07.02.05 21:16) [5]
Очень необычно звучит - "Полностью записанные логи".
Если программа закрыла файл, значит закончила работу с ним.
Если она потом "захочет" продолжить - это её проблемы.
← →
Anatoly Podgoretsky © (2005-02-07 22:19) [7]Юрий Зотов © (07.02.05 17:12) [2]
Alexander Panov © (07.02.05 19:26) [3]
Fay © (07.02.05 21:22) [6]
И смотрим заголовок "файл записан на диск полностью". Лог приведен как наглядный пример, возьмем тогда другой, запись из коммуникационного файла, каждый принятый кусок записывается, файл закрывается и снова открывается для продолжения записи, делают так с целью повышения надежности например на случай сбоя, работы других программ, которым нужен подлинный размер, да мало ли еще для чего. Определить можно только то, что в файл разрешено писать в данный момент, но не факт полной записи файла.
Файловые Базы данных в конце концов. Можно в одном месте писать, в другом читать, в третьем редактировать существующие.
← →
Fay © (2005-02-07 22:25) [8]2 Anatoly Podgoretsky © (07.02.05 22:19) [7]
Я не понял, что такое "коммуникационный файл", но хочу сказать, что метод "файл закрывается и снова открывается для продолжения записи" не даёт никакого "повышения надежности например на случай сбоя".
З.Ы.
А что такое "подлинный размер", для получения которого "файл закрывается и снова открывается"?
← →
Erik1 © (2005-02-08 10:40) [9]Закрытие файла дает повышение надежности, проверено.
← →
Romkin © (2005-02-08 11:43) [10]Вообще говоря, Find...ChangeNotification срабатывает именно когда файл закрывают после записи. То есть, сам факт уже говорит о том, что работа с файлом вроде бы закончена. А вот то, что программа больше не будет писать в файл - никто не гарантирует :)
← →
Anatoly Podgoretsky © (2005-02-08 12:58) [11]Fay © (07.02.05 22:25) [8]
Размер пишется в таблицу при закрытии файла. В случая сбоя будет неверный размер. Если после записи блока файл переоткрывать, то размер будет более менее правильный.
Неужели никогда не наблюдал при закачки с фтп, размеры значительно более 100% ?
Коммуникационный файл, это виртуальный файл, когда данные поступают например из компорта, или по фтп, при этом размер их заранее неизвестен.
Romkin © (08.02.05 11:43) [10]
Ну не только, а например для того чтобы сигнализировать об записи еще одного куска данных, для этого закрыть и открыть повторно.
Страницы: 1 вся ветка
Текущий архив: 2005.02.20;
Скачать: CL | DM;
Память: 0.47 MB
Время: 0.045 c