ГЛАВНАЯ     АРХИВ     НАПИСАТЬ АДМИНУ     ПОДПИСАТЬСЯ НА RSS     ВОЙТИ      

Поиск

Категории

Облако тегов

acer ado.net amd asp.net c sharp c# cms css exceptions google html ipad iphone it бизнес javascript jquery linq microsoft mysql net nokia nokia lumia samsung seo silverlight sql surface tsql windows 8 windows blue windows phone windows rt xna безопасность библиотека вопросы на собеседовании интересные проекты интернет интернет магазин исключения книга книги компьютерная безопасность компьютерные игры контролы курсы по программированию логированние исключений мобильные приложения монетизация сайтов наушники новости новости it новости microsoft новости интернет новости технологий ноутбук ноутбуки обработка исключений оптимизация острова периферия планшет планшеты поддержка сайтов поисковое продвижение программы продвижение продвижение сайта продвижение сайтов рабство разработка игр разработка сайтов раскрутка сайта рекламные технологии смартфон смартфоны собеседование создание сайтов средства разработки туризм фриланс хостинг яндекс
  << Предыдущий пост       Следующий пост >>  
От: inbruk
21. ноября 2010 23:40

Отслеживание действий пользователей внутри папки, это частая задача для серверов приложений. Например, есть сервер, который должен ждать, пока пользователь загрузит некий XML файл в специальную папку. Как только пользователь залил файл, сервер делает некоторую обработку в соответствии с содержимым этого файла. А после этого, например, стирает записанный файл или переносит его в другую папку. Таким образом сервер приложений может выполнять какие-то сложно конфигурируемые действия по запросу пользователя. Такое поведение может встретиться в задачах интеграции различных систем. Отслеживание действий над содержимым папки делается с помощью объекта класса FileSystemWatcher из пространства имен System.IO. Для того чтобы сделать это, надо объект должным образом сконфигурировать и навешать на него обработчики событий. Можно отслеживать различные действия пользователей: создание (событие Created), изменение (событие Changed), удаление (событие Deleted), переименование (событие Renamed). Можно отслеживать действия над файлами различных типов, например по расширению (с помощью свойства NotifyFilter). Также можно задать фильтрацию по сущностям за которыми следить (с помощью свойства NotifyFilter): за последней записью куда-либо, за именами файлов, или за именами каталогов. Все что было написано выше относится как к файлам так и к каталогам (директориям). То есть изменения каталогов отслеживаются теми же событиями. Причем важно, что каждая запись в файл вызывает обработчик события "изменения". Например, при копировании файла будет сначала вызван обработчик соответсвующий созданию нового файла. А потом несколько раз вызван обработчик изменения содержимого файла. Следующий пример показывает, как повесить обработчики на изменение содержимого некоего каталога (заданного полным путем) на C#.


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using System.IO;

namespace ConsoleApplication1
{
class Program
{
static void Main()
{
FileSystemWatcher fileSystemWatcher = new FileSystemWatcher();

fileSystemWatcher.Path = "C:\\Temp";
fileSystemWatcher.IncludeSubdirectories = true;
fileSystemWatcher.NotifyFilter =
NotifyFilters.LastAccess | NotifyFilters.LastWrite
| NotifyFilters.FileName | NotifyFilters.DirectoryName;

fileSystemWatcher.Filter = "*.*";

fileSystemWatcher.Changed += new FileSystemEventHandler(OnChanged);
fileSystemWatcher.Created += new FileSystemEventHandler(OnChanged);
fileSystemWatcher.Deleted += new FileSystemEventHandler(OnChanged);
fileSystemWatcher.Renamed += new RenamedEventHandler(OnRenamed);

fileSystemWatcher.EnableRaisingEvents = true;

Console.WriteLine("Press any key to stop programm");
Console.ReadKey(true);
}

private static void OnChanged(object source, FileSystemEventArgs e)
{
Console.WriteLine("File or directory " + e.FullPath + " was " + e.ChangeType);
}

private static void OnRenamed(object source, RenamedEventArgs e)
{
Console.WriteLine("File or directory {0} was renamed to {1}", e.OldName, e.Name);
}
}
}


Нужно недорогое отопление? Дешевое тепло обеспечат пеллетные котлы Faci. Засыпал гранулы в котел и в доме тепло.

Похожие записи


Вопросы на собеседовании C#, Net, ASP.NET, SQL
Продолжая тему вопросов на собеседовании. Нашел еще одну подборку. Оригинал лежит здесь . Перенес, чтобы не затерялось. Есть вполне вменяемые ответы (хотя, на некоторые вопросы ответил бы по-другому). Ответы находятся после списка вопросов, я их не менял. 23. Что такое шаблон проектирования Model/View/Controller? Как и зачем его применяют? 2...

Способы заработка на сайте
На этом блоге было много постов про производство и раскрутку сайтов. Но пока не было про заработок на них. Пора исправить этот недочет. Здесь будут описаны по возможности не фантастичные, и не супер низко прибыльные способы. Также упор будет сделан именно на организацию процесса, а не технических деталях, которых в обилии в интернете. Несмотря на то, что как пр...

Silverlight, HTML5 и непрозрачная стратегия развития Microsoft
Оригинал статьи взят отсюда: Silverlight, HTML5 и непрозрачная стратегия развития Microsoft Автор: Peter Bright Переводчик: Mairon     По непонятным мне на данный момент причинам, похоже, что многие разработчики, присутствовавшие на недавней конференции PDC-2010 (Крупнейшая конференция Microsoft для разработчиков — Прим. переводчика), были сильн...

Комментарии

 
nobelwerfer 29.07.2011 18:39:07 #

вы делаете успехи, сперли небось где нибудь, колитесь

Добавить комментарий




biuquote
  • Комментарий
  • Предпросмотр
Loading


  Сохранить комментарий