21 Haziran 2018 Perşembe

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ı
Açıklaması şöyle.
Set IncludeSubdirectories to true when you want to watch for change notifications for files and directories contained within the directory specified through the Path property, and its subdirectories. Setting the IncludeSubdirectories property to false helps reduce the number of notifications sent to the internal buffer. For more information on filtering out unwanted notifications, see the NotifyFilter and InternalBufferSize properties. More...
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