Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2005.02.20;
Скачать: [xml.tar.bz2];

Вниз

Как определить, что файл записан на диск полностью   Найти похожие ветки 

 
-= 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.035 c
9-1096023740
<<BEAST>>
2004-09-24 15:02
2005.02.20
DOOM3


1-1107862267
NightStranger
2005-02-08 14:31
2005.02.20
Проблемка с ListBox


3-1106203884
juice
2005-01-20 09:51
2005.02.20
Несколько sql-запросов подряд


3-1105635701
Alex_V
2005-01-13 20:01
2005.02.20
Экспорт в форматированный текст


9-1099593636
Кастик
2004-11-04 21:40
2005.02.20
Платная игра на бесплатном движке... реально?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский