Главная страница
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.042 c
14-1106650775
syte_ser78
2005-01-25 13:59
2005.02.20
Epson stylus Color 300


1-1107772136
Raider
2005-02-07 13:28
2005.02.20
Как сделаь так чтоб


3-1106644487
Lucifer
2005-01-25 12:14
2005.02.20
Ошибка синтаксиса From


14-1107190910
Piter
2005-01-31 20:01
2005.02.20
Проблемы с Half-Life 2


1-1107703259
serko
2005-02-06 18:20
2005.02.20
Создание файла!