Я написал сервис, который забирает файлы и одной директории и мувит их в другие.
Для того что б не гонят в холостую цикл while{} в ожидании файла, который нужно забрать, я использую функции FindFirstChangeNotification/FindNextChangeNotification,
и для ожидания — MsgWaitForMultipleObjects.
Все работает нормлаьно, сервис оживает когда в моей директории что то меняеться.
но у меня возникает проблема: сервис пытается забрать файл который еще не скопировалсяи соответственно возникает ошибка.
Как с этим бороться, задержку ставить не получиться, так как файлы могут быть разных размеров
Может че то лучше FindFirstChangeNotification/FindNextChangeNotification. Подскажите
Пока файл изменяется, его нельзя отркыть для добавления.
Можно проверять, или открывается файл, если да — то тогда уже все скопировалось, если нет — подождать сколько не жалко.
Любая задача имеет решение, даже когда решения не существует
Re[4]: Копирование файла
От:
Аноним
Дата:
01.07.04 15:43
Оценка:
Здравствуйте, Burd, Вы писали:
B>Пока файл изменяется, его нельзя отркыть для добавления. B>Можно проверять, или открывается файл, если да — то тогда уже все скопировалось, если нет — подождать сколько не жал
Спасибо, щас попробую
Я так и делал, только не ждал , а если файл не открывался , выдавал ошибку.
Здравствуйте, Slava Antonov, Вы писали:
SA>Hello , you wrote:
>> но у меня возникает проблема: сервис пытается забрать файл который еще >> не скопировалсяи соответственно возникает ошибка.
SA>Если все это происходит на NTFS, и целевая папка тоже на NTFS, то есть SA>одно очень простое и элегантное решение — CreateHardLink(...)
Только надо не забывать что реально файл хранится в одном месте.
И если анониму нужно создавать копии файлов — то это не подойдет.
SA>-- SA>Всего хорошего, Слава SA>http://slava.users.otts.ru
Правда, Ложь — мне все одно — я имею свое мнение.
Если функция недокументированна — это не значит, что ее не используют все ваши конкуренты в своих продуктах.
Любой строй переходный и отрицать это значит быть закостенелым идиотом.
Здравствуйте, Злость, Вы писали:
З>Здравствуйте, Slava Antonov, Вы писали:
SA>>Hello , you wrote:
SA>>Если все это происходит на NTFS, и целевая папка тоже на NTFS, то есть SA>>одно очень простое и элегантное решение — CreateHardLink(...)
З>Только надо не забывать что реально файл хранится в одном месте.
З>И если анониму нужно создавать копии файлов — то это не подойдет.
это происходит не на NTFS, может еще какой то вариант подскажете?
Здравствуйте, atrofa, Вы писали:
З>>И если анониму нужно создавать копии файлов — то это не подойдет.
A>это происходит не на NTFS, может еще какой то вариант подскажете?
Я то подскажу — но он вас не устроит — так как я скажу только File System Filter.
Правда, Ложь — мне все одно — я имею свое мнение.
Если функция недокументированна — это не значит, что ее не используют все ваши конкуренты в своих продуктах.
Любой строй переходный и отрицать это значит быть закостенелым идиотом.
Hello atrofa, you wrote:
> это происходит не на NTFS, может еще какой то вариант подскажете?
Если не хотите писать FSF, то можно попробовать так:
1) Мониторим папку
2) Если появился/изменился файл, то запускаем нить, которая периодически
пытается открыть файл с эксклюзивными правами доступа.
3) Если у нее это получилось, то запись в файл закончилась. Копируем его
куда нужно.
Здравствуйте, Аноним, Вы писали:
А>Привет всем!
А>Я написал сервис, который забирает файлы и одной директории и мувит их в другие.
А>Для того что б не гонят в холостую цикл while{} в ожидании файла, который нужно забрать, я использую функции FindFirstChangeNotification/FindNextChangeNotification, А>и для ожидания — MsgWaitForMultipleObjects. А>Все работает нормлаьно, сервис оживает когда в моей директории что то меняеться. А>но у меня возникает проблема: сервис пытается забрать файл который еще не скопировалсяи соответственно возникает ошибка. А>Как с этим бороться, задержку ставить не получиться, так как файлы могут быть разных размеров А>Может че то лучше FindFirstChangeNotification/FindNextChangeNotification. Подскажите
А>Заранее спасибо