Программирование >>  Автоматически обновляемые приложения 

1 ... 114 115 116 [ 117 ] 118 119 120 ... 170


Примечание

Пример сравнения двух файлов находится в папке FileCompare на прилагаемом диске.

Отслеживание изменений в файловой системе

в .NET Framework имеется такой интересный класс, как FiieSystemWatcher из пространства имен system, ю, который позволяет следить за изменениями в файловой системе. Например, вы можете установить наблюдение за заданной папкой и отслеживать любые изменения в подпайках и файлах. Обратите внимание, что наблюдать за файлами можно не только на локальном компьютере, но и на сетевых дисках или удаленных компьютерах. Я приведу лишь базовый пример (листинг 10.43), который даст представление о классе

FilySystemWatcher.

Листинг 10.43. Отслеживание изменений в файловой системе

private void Forml Load(object sender, EventArgs e) {

Создадим объект FiieSystemWatcher и установим его свойства FiieSystemWatcher watcher = new FiieSystemWatcher(); Наблюдение за папкой WUTEMP watcher.Path = @ C:\wutemp\ ;

Следим за изменениями по последнему доступу,

времени записи и переименования файлов или папки

private void buttonl Click(object sender, EventArgs e) {

Сравниваем два файла. Путь к файлам указан в текстовых полях.

if (FileCompare(this.textBoxl.Text, this.textBox2.Text))

MessageBox.Show( Файлы одинаковы. );

else {

MessageBox.Show( Файлы не одинаковы. );



События

private static void OnChanged(object source, FileSystemEventArgs e) {

При изменении, создании или удалении файла выводим сообщение MessageBox.Show( Файл: + e.FullPath + + е.ChangeType);

private static void OnRenamed(object source, RenamedEventArgs e) {

При переименовании файла тоже выводим сообщение MessageBox.Show( Файл: + е.OldFullPath +

переименован в + e.FullPath);

Можно написать приложение, которое при изменениях в наблюдаемых папках будет отсылать сообщения по электронной почте. Учитывая, что слежение за папками можно проводить и на удаленных машинах, вы можете использовать эту возможность для разработки полезных утилит, которые пригодятся системному администратору.

Примечание

Пример работы с классом FiieSystemWatcher НЭХОДИТСЯ В папке Watcher на прилагаемом диске

watcher.NotifyFilter = NotifyFilters.LastAccess I NotifyFilters.LastWrite

I NotifyFilters.FileName NotifyFilters.DirectoryName; Наблюдаем только файлы TXT watcher.Filter = *.txt ;

Добавляем обработчики событий

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

Начинаем наблюдение

watcher.EnableRaisingEvents = true;



Листинг 10.44. Установка уровня доступа к файлу

using System.Security.AccessControl; using System.10;

static void SetRule(string filePath, string account,

FileSystemRights rights, AccessControlType controlType)

Получим объект FileSecurity, который устанавливает текущие настройки безопасности

FileSecurity fSecurity = File.GetAccessControl(filePath); Добавим FileSystemAccessRule к настройкам безопасности fSecurity.ResetAccessRule(new FileSystemAccessRule(account,

rights, controlType)

Устанавливаем новые настройки доступа File.SetAccessControi(filePath, fSecurity);

private void butDenyAccess Click(object sender, EventArgs e) {

Отказать в доступе пользователю alexander SetRule(@ d:\test.txt , alexander ,

FileSystemRights.Read, AccessControlType.Deny);

Как установить уровень доступа к файлу?

Закончить главу я хочу кратким обзором новой возможности настройки уровня доступа к файлам и папками. В .NET Framework 2.0 появились новые

методы GetAccessControl И SetAccessControl КЛассОВ File И Directory, С

помощью которых можно прочитать ИЛИ установить уровень доступа к файлу или папке. Общая методика изменения уровня доступа к файлу следующая. Сначала вы выбираете файл, настройки доступа которого вы хотите изменить, далее с помощью метода GetAccessControl узнаете текущие настройки безопасности, и затем при помощи SetAccessControi устанавливаете уже нужные настройки для доступа. В следующем примере я устанавливаю настройки к файлу test.txt для пользователя alexander (то есть для себя), в результате чего при попытке открыть файл для чтения я получу сообщение, что мне отказано в доступе. Чтобы вернуть доступ к файлу, нужно снова изменить настройки.



1 ... 114 115 116 [ 117 ] 118 119 120 ... 170

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика