- •Основы c#. Урок 1. Что такое c#?
- •Основы c#. Урок 2. Что такое net Runtime?
- •Основы c#. Урок 3. Первая программа на c#
- •Основы c#. Урок 4. Переменные языка c#
- •Основы c#. Урок 5. Логические операторы
- •Основы c#. Урок 6. Массивы в c#
- •Основы c#. Урок 7. Операторы if и switch
- •Основы c#. Урок 8. Циклы for и foreach
- •Основы c#. Урок 10. Классы в c#
- •Основы c#. Урок 9. Цикл while
- •Основы c#. Урок 11. Конструкторы классов
- •Основы c#. Урок 12. Наследование
- •Основы c#. Урок 13. Запись в экземпляр базового класса экземпляра производного
- •Основы c#. Урок 14. Вложенные классы
- •Основы c#. Урок 15. Перегрузка бинарных операторов
- •Основы c#. Урок 16. Перегрузка унарных операторов
- •Основы c#. Урок 17. Область видимости
- •Основы c#. Урок 18. Виртуальные функции
- •Основы c#. Урок 19. Абстрактные классы
- •Основы c#. Урок 20. Запрещение наследования или модификатор sealed
- •Основы c#. Урок 21. Статические переменные
- •Основы c#. Урок 22. Статические методы класса
- •Основы c#. Урок 23. Статические конструкторы
- •Основы c#. Урок 24. Закрытые конструкторы или классы без экземпляров
- •Основы c#. Урок 25. Передача параметров переменой длины
- •Основы c#. Урок 26. Строки (класс System.String)
- •Основы c#. Урок 27. Строки (класс StringBuilder)
- •Основы c#. Урок 28. Передача параметров по ссылке и по значению (ref и out)
- •Основы c#. Урок 29. Пример передачи по ссылке
- •Основы c#. Урок 30. Перегрузка
- •Основы c#. Урок 31. Функции класса System.Array
- •Основы c#. Урок 32. Делегаты
- •Основы c#. Урок 33. События
- •Основы c#. Урок 34. Пример класса с событием
- •Основы c#. Урок 35. Введение в атрибуты
- •Основы c#. Урок 36. Пример пользовательского атрибута
- •Основы c#. Урок 37. Параметры командной строки
- •Основы c#. Урок 38. Метод Main в отдельном классе
- •Основы c#. Урок 39. Форматированный вывод
- •Основы c#. Урок 40. Класс System.Object
- •Основы c#. Урок 41. Методы класса System.Object
- •Основы c#. Урок 42. Переопределяем методы класса System.Object
- •Основы c#. Урок 43. Константы
- •Основы c#. Урок 44. Модификаторы доступа
- •Основы c#. Урок 45. Ссылка на текущий экземпляр класса (this)
- •Основы c#. Урок 46. Класс Environment
- •Основы c#. Урок 47. Работаем со специальными папками
- •Основы c#. Урок 48. Получаем список всех дисков
- •Основы c#. Урок 49. Ввод/вывод в c# (System.Io)
- •Основы c#. Урок 50. Классы для работы с папками и файлами
- •Основы c#. Урок 51. Класс Directory
- •Основы c#. Урок 52. Класс File
- •Основы c#. Урок 53. Класс FileSystemInfo
- •Основы c#. Урок 54. Класс DirectoryInfo
- •Основы c#. Урок 55. Перечисление FileAttributes
- •Основы c#. Урок 56. Класс FileInfo
- •Основы c#. Урок 57. Пример: получение имен всех подпапок
- •Основы c#. Урок 58. Класс Path
- •Основы c#. Урок 59. Класс FileSystemWatcher
- •Основы c#. Урок 60. Перечисление NotifyFilters
- •Основы c#. Урок 61. Перечисление WatcherChangeTypes
- •Основы c#. Урок 62. Класс FileSystemWatcher - пример использования
- •Основы c#. Урок 63. Сериализация класса
- •Основы c#. Урок 64. Класс BitArray
- •Основы c#. Урок 65. Класс Stack
- •Основы c#. Урок 66. Класс SortedList
- •Основы c#. Урок 67. Конвертация типов через класс Convert
- •Основы c#. Урок 68. Работа с перечислениями (enum)
- •Основы c#. Урок 69. Использование атрибута Flags для перечисления
- •Основы c#. Урок 70. Использование атрибута Flags для перечисления 2
- •Основы c#. Урок 71. Nullable типы
- •Основы c#. Урок 72. Reflection - динамическое создание кода
- •Основы c#. Урок 73. Reflection - создание enum'ов
Основы c#. Урок 59. Класс FileSystemWatcher
Класс FileSystemWatcher из пространства имен System.IO предназначен для отслеживания изменений в файловой системе. Изменения можно отслеживать как на локальном компьютере, так и на удаленном.
Вот пример использования этого класса.
// Подключем нужное пространство имен.
using System.IO;
class Class1
{
static void Main(string[] args)
{
// Будем следить за папкой "c:\tmp".
FileSystemWatcher watcher = new FileSystemWatcher(@"c:\tmp");
// Следим за изменением имени файлов.
watcher.NotifyFilter = NotifyFilters.FileName;
// Добавляем обработчик для события переименования файла.
watcher.Renamed += new RenamedEventHandler(OnRenamed);
// Начинаем слежение.
watcher.EnableRaisingEvents = true;
// Следим, пока пользователь не нажал q.
Console.WriteLine("Press 'q' to exit");
while(Console.Read()!='q');
}
// Обработчик для события переименования файла.
private static void OnRenamed(object source, RenamedEventArgs e)
{
Console.WriteLine("{0} renamed to {1}", e.OldName, e.Name);
}
}
Как вы видите, схема действий тут такая - сначала мы указываем, за чем именно мы хотим следить (за какой папкой, за какими файлами и за какими событиями для этих файлов). Потом мы указываем, что за метод будет выполняться при наступлении того или иного события. Разумеется, этот метод должен быть в нашей программе, причем он должен иметь определенную сигнатуру.
Конкретно в нашем примере мы будем отслеживать переименование для всех файлов в папке "c:\tmp".
Основы c#. Урок 60. Перечисление NotifyFilters
Перечисление NotifyFilters служит для задания параметров, по которым происходит отслеживание изменений в файловой системе. Оно может принимать следующие значения:
Size - изменение размера файла или папки
CreationTime - изменение времени создания файла или папки
FileName - изменение имени файла
DirectoryName - изменение имени папки
Attributes - изменение атрибутов файла или папки
LastAccess - изменение времени последнего доступа к файлу или папке
LastWrite - изменение времени последней записи в файл или папку
Security - изменение в установках безопасности файла или папки
Пример использования:
FileSystemWatcher w = new FileSystemWatcher();
//Изменения в размере или в имени файла.
w.NotifyFilter = NotifyFilters.Size | NotifyFilters.FileName;
Основы c#. Урок 61. Перечисление WatcherChangeTypes
Перечисление WatcherChangeTypes предназначено для определения, какие изменения отслеживаются в файловой системе. Вот какие значения оно может принимать:
Changed - отслеживать изменения в атрибутах файла или папки (например, размер, время последней записи и др.)
Created - создание файла или папки
Deleted - удаление файла или папки
Renamed - переименование файла или папки
All - все из перечисленных
Основы c#. Урок 62. Класс FileSystemWatcher - пример использования
Вот пример использования класса FileSystemWatcher. В данном примере мы отслеживаем события переименования, удаления, создания и изменения размера файла.
using System;
using System.IO;
namespace SystemWatcher
{
class Class1
{
static void Main(string[] args)
{
FileSystemWatcher watcher = new FileSystemWatcher(@"c:\tmp");
// Следим за изменением имени и размера файлов.
watcher.NotifyFilter = NotifyFilters.FileName | NotifyFilters.Size;
// Добавляем обработчики для событий.
watcher.Renamed += new RenamedEventHandler(OnRenamed);
watcher.Deleted += new FileSystemEventHandler(OnChanged);
watcher.Created += new FileSystemEventHandler(OnChanged);
watcher.Changed += new FileSystemEventHandler(OnChanged);
watcher.EnableRaisingEvents = true;
Console.WriteLine("Press 'q' to exit");
while (Console.Read() != 'q') ;
}
// Обработчик для события переименования файла.
private static void OnRenamed(object source, RenamedEventArgs e)
{
Console.WriteLine("{0} renamed to {1}", e.OldName, e.Name);
}
// Обработчик для остальных события файла.
private static void OnChanged(object source, FileSystemEventArgs e)
{
switch (e.ChangeType)
{
case WatcherChangeTypes.Deleted:
Console.WriteLine("{0} - deleted", e.Name);
break;
case WatcherChangeTypes.Created:
Console.WriteLine("{0} - created", e.Name);
break;
case WatcherChangeTypes.Changed:
Console.WriteLine("{0} - changed", e.Name);
break;
}
}
}
}
Обратите внимание, что для обработчика события Changed мы установили фильтр:
...
watcher.NotifyFilter = NotifyFilters.FileName | NotifyFilters.Size;
...
Т. е. мы, например, не отслеживаем в данном примере время последнего доступа к файлу или изменения атрибутов файла.
Также обратите внимание, что мы используем один обработчик для 3-х событий - Deleted, Created и Changed.
