Копирование файла
От: Аноним  
Дата: 01.07.04 15:17
Оценка:
Привет всем!

Я написал сервис, который забирает файлы и одной директории и мувит их в другие.

Для того что б не гонят в холостую цикл while{} в ожидании файла, который нужно забрать, я использую функции FindFirstChangeNotification/FindNextChangeNotification,
и для ожидания — MsgWaitForMultipleObjects.
Все работает нормлаьно, сервис оживает когда в моей директории что то меняеться.
но у меня возникает проблема: сервис пытается забрать файл который еще не скопировалсяи соответственно возникает ошибка.
Как с этим бороться, задержку ставить не получиться, так как файлы могут быть разных размеров
Может че то лучше FindFirstChangeNotification/FindNextChangeNotification. Подскажите

Заранее спасибо
Re: Копирование файла
От: Burd Украина http://proxysearcher.sourceforge.net
Дата: 01.07.04 15:20
Оценка:
Подождать, пока размер файла не перестанет изменятся
Любая задача имеет решение, даже когда решения не существует
Re[2]: Копирование файла
От: Аноним  
Дата: 01.07.04 15:31
Оценка:
Здравствуйте, Burd, Вы писали:

B>Подождать, пока размер файла не перестанет изменятся


На протяжении какого времени?
Re[3]: Копирование файла
От: Burd Украина http://proxysearcher.sourceforge.net
Дата: 01.07.04 15:38
Оценка:
Пока файл изменяется, его нельзя отркыть для добавления.
Можно проверять, или открывается файл, если да — то тогда уже все скопировалось, если нет — подождать сколько не жалко.
Любая задача имеет решение, даже когда решения не существует
Re[4]: Копирование файла
От: Аноним  
Дата: 01.07.04 15:43
Оценка:
Здравствуйте, Burd, Вы писали:

B>Пока файл изменяется, его нельзя отркыть для добавления.

B>Можно проверять, или открывается файл, если да — то тогда уже все скопировалось, если нет — подождать сколько не жал

Спасибо, щас попробую
Я так и делал, только не ждал , а если файл не открывался , выдавал ошибку.
Re: Копирование файла
От: Slava Antonov Россия http://deadbeef.narod.ru
Дата: 01.07.04 23:15
Оценка:
Hello , you wrote:

> но у меня возникает проблема: сервис пытается забрать файл который еще

> не скопировалсяи соответственно возникает ошибка.

Если все это происходит на NTFS, и целевая папка тоже на NTFS, то есть
одно очень простое и элегантное решение — CreateHardLink(...)

--
Всего хорошего, Слава
http://slava.users.otts.ru
Posted via RSDN NNTP Server 1.9 beta
Re[2]: Копирование файла
От: Злость Россия  
Дата: 02.07.04 06:31
Оценка:
Здравствуйте, Slava Antonov, Вы писали:

SA>Hello , you wrote:


>> но у меня возникает проблема: сервис пытается забрать файл который еще

>> не скопировалсяи соответственно возникает ошибка.

SA>Если все это происходит на NTFS, и целевая папка тоже на NTFS, то есть

SA>одно очень простое и элегантное решение — CreateHardLink(...)

Только надо не забывать что реально файл хранится в одном месте.

И если анониму нужно создавать копии файлов — то это не подойдет.

SA>--

SA>Всего хорошего, Слава
SA>http://slava.users.otts.ru
Правда, Ложь — мне все одно — я имею свое мнение.
Если функция недокументированна — это не значит, что ее не используют все ваши конкуренты в своих продуктах.
Любой строй переходный и отрицать это значит быть закостенелым идиотом.
Re[3]: Копирование файла
От: atrofa Украина  
Дата: 02.07.04 06:35
Оценка:
Здравствуйте, Злость, Вы писали:

З>Здравствуйте, Slava Antonov, Вы писали:


SA>>Hello , you wrote:


SA>>Если все это происходит на NTFS, и целевая папка тоже на NTFS, то есть

SA>>одно очень простое и элегантное решение — CreateHardLink(...)

З>Только надо не забывать что реально файл хранится в одном месте.


З>И если анониму нужно создавать копии файлов — то это не подойдет.


это происходит не на NTFS, может еще какой то вариант подскажете?
Re[4]: Копирование файла
От: Злость Россия  
Дата: 02.07.04 06:57
Оценка:
Здравствуйте, atrofa, Вы писали:

З>>И если анониму нужно создавать копии файлов — то это не подойдет.


A>это происходит не на NTFS, может еще какой то вариант подскажете?


Я то подскажу — но он вас не устроит — так как я скажу только File System Filter.
Правда, Ложь — мне все одно — я имею свое мнение.
Если функция недокументированна — это не значит, что ее не используют все ваши конкуренты в своих продуктах.
Любой строй переходный и отрицать это значит быть закостенелым идиотом.
Re[5]: Копирование файла
От: atrofa Украина  
Дата: 02.07.04 07:04
Оценка: +1
Здравствуйте, Злость, Вы писали:

З>Я то подскажу — но он вас не устроит — так как я скажу только File System Filter.


Это что драйвер писать нужно??
Re[4]: Копирование файла
От: Slava Antonov Россия http://deadbeef.narod.ru
Дата: 02.07.04 10:27
Оценка:
Hello atrofa, you wrote:

> это происходит не на NTFS, может еще какой то вариант подскажете?


Если не хотите писать FSF, то можно попробовать так:
1) Мониторим папку
2) Если появился/изменился файл, то запускаем нить, которая периодически
пытается открыть файл с эксклюзивными правами доступа.
3) Если у нее это получилось, то запись в файл закончилась. Копируем его
куда нужно.

--
Всего хорошего, Слава
http://slava.users.otts.ru
Posted via RSDN NNTP Server 1.9 beta
Re: Копирование файла
От: Аноним  
Дата: 07.07.04 11:06
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Привет всем!


А>Я написал сервис, который забирает файлы и одной директории и мувит их в другие.


А>Для того что б не гонят в холостую цикл while{} в ожидании файла, который нужно забрать, я использую функции FindFirstChangeNotification/FindNextChangeNotification,

А>и для ожидания — MsgWaitForMultipleObjects.
А>Все работает нормлаьно, сервис оживает когда в моей директории что то меняеться.
А>но у меня возникает проблема: сервис пытается забрать файл который еще не скопировалсяи соответственно возникает ошибка.
А>Как с этим бороться, задержку ставить не получиться, так как файлы могут быть разных размеров
А>Может че то лучше FindFirstChangeNotification/FindNextChangeNotification. Подскажите

А>Заранее спасибо
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.