Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.5 MB
Время: 0.104 c
1-1107363505
БезИмени
2005-02-02 19:58
2005.02.20
Визуальній конструктор


1-1107356806
GoZilla
2005-02-02 18:06
2005.02.20
Кто знает, что это за ошибка?


14-1107244946
Jaxtor
2005-02-01 11:02
2005.02.20
Запуск CGI приложения и обработка его результата


14-1107348880
Vlad Oshin
2005-02-02 15:54
2005.02.20
у кого нибудь компьютер W95 входит в домен W2000?


14-1107117370
rjkz
2005-01-30 23:36
2005.02.20
Помогите найти компонент