12 Şubat 2018 Pazartesi

FileSystemWatcher Sınıfı

Giriş
Şu satırı dahil ederiz.
using System.IO;
Bu sınıf bir işlem birden fazla event gönderebilir. Buradaki kod soruna yardımcı oluyor.

Constructor - Default
Şöyle yaparız. Bu durumda Path alanını doldurmak gerekir.
FileSystemWatcher watcher = new FileSystemWatcher();
Constructor
Bir dizin veririz. Şöyle yaparız.
FileSystemWatcher watcher = new FileSystemWatcher(MyFolder);
Changed Event'i
Şu NotifyFilter değerleri bu event'i tetikler.
Attributes,CreationTime,LastAccess,LastWrite,Security,Size
Dizin değişince çağrılmasını istediğimiz metodu tanımlarız.
watcher.Changed += new FileSystemEventHandler(OnResultChanged);
watcher.EnableRaisingEvents = true;
Changed Callback Metodu iskeleti için şöyle yaparız
void watcher_Changed(object sender, FileSystemEventArgs e)
{
  Console.WriteLine("File : " + e.FullPath + " is updated.");

}
Eğer callback birçok event için ortak kullanılıyorsa ChangeType alanına bakarız. Şöyle yaparız.
void OnResultChanged(object sender, FileSystemEventArgs e) {
  if (e.ChangeType == WatcherChangeTypes.Changed) {
    // Check file ready to read

    // Ready all lines
    string[] lines = File.ReadAllLines(e.FullPath);
    
  }
}
Created Event'i
Şu NotifyFilter değerleri bu event'i tetikler.
DirectoryName,FileName
Şöyle yaparız.
watcher.Created += (source, e) => OnChanged(source, e);
Created Callback Metodu iskeleti için şöyle yaparız.
watcher.Created += new FileSystemEventHandler(OnCreated);

public void OnCreated(object sender, FileSystemEventArgs e)
{
  string s = e.FullPath;
}
Şöyle yaparız.
void watcher_Created(object sender, FileSystemEventArgs e)
{
  Console.WriteLine("File : " + e.FullPath + " is created.");

}
Deleted Event'i
Şu NotifyFilter değerleri bu event'i tetikler.


DirectoryName,FileName
Şöyle yaparız.
watcher.Deleted += watcher_Deleted;//called when a file is deleted in path
Deleted Callback Metodu iskeleti için şöyle yaparız.


void watcher_Deleted(object sender, FileSystemEventArgs e)
{
  Console.WriteLine("File : " + e.FullPath + " is deleted.");
}
EnableRaisingEvents Alanı
Gözleme işlemini etkinleştirir. Şöyle yaparız.
watcher.EnableRaisingEvents = true;
Filter Alanı
Gözlemek istediğimiz dosyaları süzebiliriz. Her şeyi gözlemek için şöyle yaparız.
watcher.Filter = "*.*";
IncludeSubDirectories Alanı
Path alanında belirtilen dizinin tüm alt dizinlerini de gözleriz. Şöyle yaparız.
watcher.IncludeSubdirectories = true;//make sure watcher will look into subfolders
NotifyFilter Alanı
Yeni bir dosya eklenince yakalamak için şöyle yaparız.
watcher.NotifyFilter = NotifyFilters.FileName | NotifyFilters.LastWrite;
Şöyle yaparız.
watcher.NotifyFilter = NotifyFilters.LastWrite |
                       NotifyFilters.LastAccess |
                       NotifyFilters.FileName |
                       NotifyFilters.DirectoryName;
Şöyle yaparız.
NotifyFilter = NotifyFilters.Attributes |
               NotifyFilters.CreationTime |
               NotifyFilters.DirectoryName |
               NotifyFilters.FileName |
               NotifyFilters.LastAccess |
               NotifyFilters.LastWrite |
               NotifyFilters.Security |
               NotifyFilters.Size;
Renamed Event'i
Şu NotifyFilter değerleri bu event'i tetikler.
DirectoryName,FileName
Path Alanı
Gözlemek istediğimiz dizini veririz. Şöyle yaparız.
watcher.Path = ...;

Hiç yorum yok:

Yorum Gönder