Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Общие вопросы по .NET и C# > Событие копирования файла/директории |
Автор: Dogevec 15.12.2011, 11:04 | ||
Отслеживаю изменения в контролируемой директории при помощи FileSystemWatcher. При создании, изменении, переимонвании и удалении файлов/поддиректорий в контролируемой директории, всё хорошо, приходит по одному сообщению. Но при копировании файла в контролируемую директорию приходит сообщении о создании файла/директории, а так же 1-2 сообщения о его изменении. Как избежать этого? Дело в FileSystemWatcher или это примудрости самой OS Windows ? Код создания класса FileSystemWatcher :
|
Автор: RastaDja 15.12.2011, 11:13 |
скорее всего это Windows, так как для того чтоб скопировать файл, нужно сначала создать другой файл, в который записать содержимое исходного файла. Тоже самое и с папкой. Кстати, если Вы копируете папку, например, с 2-мя, 3-мя, n, подпапками, у вас возникает 2, 3, и N событий создания папки? |
Автор: Dogevec 15.12.2011, 11:21 |
Только что проверил. Да, при копировании приходят сообщения о создании всех вложенных папках и файлах. Добавлено через 1 минуту и 25 секунд То есть, как я понимаю, в директории, куда копируется файл, создаётся темповкий файл и целевой файл. Затем данные заносяттся в темповский, а из него уже копируются в целевой? |
Автор: RastaDja 15.12.2011, 11:26 |
Видимо никак, все работает правильно. А зачем вам этого избегать, для чего вам это надо? Все зависит от задачи... |
Автор: Dogevec 15.12.2011, 11:31 |
Необходимо мониторить изменения в расшаренной директории, и отправлять отчёт об этом на почту(список изменений за установленный интервал). И получается, что приходят два сообщения, о создании и изменении файла при копировании, что будет приводить просто к путанице в общем списке производимых операций... |
Автор: RastaDja 15.12.2011, 12:10 |
Относительно расшаренной директории, все происходит правильно, к томуже Вы не знаете, из какой папки производится копирование. Для отчета о копировани нужно знать папку источник и приемник (иначе как писать отчет? нужно что-то типа - скопировано от туда-то вот это, вот сюда. ). Приемник известен, а источник - видимо нет. Поэтому относительно расшареной папки (как и относительно любой) есть только операция создания и изменения. А если у вас есть возможность получить папку источник, тогда просто считаете число вложеных файлов, и при копировании оно должно быть равным числу происходящих событий. Когда все события произошли, пишите в отчет. |