Вопрос по c#, .net, filesystemwatcher – Используйте FileSystemWatcher для одного файла в C #

43

Когда я пытаюсь установить путь наблюдателя для одного файла, например, так:

watcher.Path = filePath1;

Я получаю ошибку:

The directory name C:\Cromos 3.0\repository\diagnostics\dwm01_2011_06_13__09_03.LXD is invalid.

Вы можете только установить путь к каталогу папки?

watcher.Filter будет делать то, что вам нужно. Jay
@Charleh, я не уверен, что согласен с этим, поскольку FileSystemWatcher также предоставляет измененное событие, поэтому вы можете узнать, когда конкретный файл изменяется. Justin Harvey
Хорошо, это правда, это было давно, так как я использовал это - я почти уверен, что я прочитал, что иногда это может быть ненадежно, когда большое количество изменений / файлов было добавлено / удалено и т. Д. Charleh

Ваш Ответ

2   ответа
5

но вы можете следить за конкретными файлами, установив в свойстве filter имя файла.

например

watcher.Filter = "dwm01_2011_06_13__09_03.LXD";
Спасибо! Знаете ли вы, будет ли это работать, если я хочу смотреть несколько отдельных страниц. т. е. мой файловый системный наблюдатель находится внутри страницы. учебный класс. Несколько экземпляров класса = несколько отдельных страниц для просмотра? Jimmy
Да, я не понимаю, почему нет.
Возможно, если статичный. Объект Page будет выгружен после завершения ответа.
86

а

watcher.Path = Path.GetDirectoryName(filePath1); 
watcher.Filter = Path.GetFileName(filePath1);

должно сработать.

Не относится к вашему правильному вопросу, но, конечно же, как указано в комментариях ниже, необходимо установитьEnableRaisingEvents свойство true, чтобы включить функциональность FileSystemWatcher

Вам нужно будет запустить экземпляр этого класса, иначе не будет никакого средства просмотра файлов.
решена! Я забыл: watcher.EnableRaisingEvents = true; Jimmy
имеет смысл, но «OnChanged» Событие не вызывается, когда я изменяю содержимое файла. Является ли проблемой то, что мой файловый системный наблюдатель находится внутри класса, а не в «Form1»? Jimmy
Также обратите внимание, что вам нужно установитьEnableRaisingEvents = true после установки всего остального, иначе это не сработает.

Похожие вопросы