Как реализовать наблюдатель за файловой системой? - PullRequest
0 голосов
/ 03 марта 2011

У меня такая ситуация:

Предположим, есть одна папка "D: \ Main", которая может содержать любой файл слов. При добавлении любого файла / файлов в папку, мне нужно проанализировать файл, и на основе некоторых ключевых слов мне нужно перенести файл в некоторые другие подпапки, а также некоторые записи в базу данных.

Я кое-что знаю о FileSystemWatcher. Если бы была кнопка типа «Проверить и переместить», то я знаю, что в случае нажатия кнопки я могу что-то сделать, но как сделать это автоматически. Я имею в виду, если я добавляю файл в папку вручную, он должен делать то же самое (файлы могут быть загружены как через Интернет, так и вручную). В настоящее время я работаю в веб-приложении с asp.net и c #, и у меня есть немного знаний об windows приложение. Кто-нибудь может подсказать, как мне поступить? Спасибо.

Ответы [ 2 ]

1 голос
/ 03 марта 2011

Вам нужно будет создать приложение для Windows или приложение-службу Windows.FileSystemWatch не выживет в веб-приложении.Причина в том, что веб-приложение работает, выполняя следующие действия:

  1. поток веб-сервера загружает приложение
  2. ваше приложение запускает наблюдатель и затем, наконец, выводит веб-ответ.
  3. После некоторого простоя поток завершает работу приложения и, следовательно, вашего наблюдателя.

Если у вас есть приложение для Windows, вы можете добавить CanRaiseEvents = true и w.Created += new System.IO.FileSystemEventHandler(w_Created); к своему наблюдателю.Делай свою обработку в

    void w_Created(object sender, System.IO.FileSystemEventArgs e)
    {
        // here
    }
0 голосов
/ 03 марта 2011

Мне просто довелось исследовать нечто очень похожее.

Но вы ответили на свой вопрос. FileSystemWatcher скорее всего то, что вы хотите.

Более подробная информация об API Win32 находится здесь: Получение уведомлений об изменении каталога

и здесь: FindFirstChangeNotification

...