Burak Çalışkan

FileSystemWatcher ile klasör, dosya ve disk işlemlerini takip etmek

  • 8 sene önce, Burak Çalışkan tarafından yazılmıştır.
  • FileSystemWatcher ile klasör, dosya ve disk işlemlerini takip etmek için yorumlar kapalı
  • C#,Yazılım

Bu makalemizde Windows projelerimizde, bir sürücü veya klasörde olan biten islemleri takip etmek, izlemek için ihtiyacimiz olan FileSystemWatcher kontrolü hakkinda bilgi bulabilirsiniz.

FileSystemWatcher kontrolü, parametre olarak verdigimiz bir diski, klasörü veya dosyayi takip etmemizi saglar. Dosyanin adi degistiginde, degisiklik oldugunda, silindiginde veya yeni bir dosya olusturdugumuzda bunun bilgisini alabiliriz. FileSystemWatcher nesnesini ister toolboxtan projenize sürükleyip ekleyebilirsiniz. Isterseniz de kendiniz de örnekleyerek olusturabilirsiniz.

En çok kullanilan özellikleri:

Filter:  Eger bir dosya tipinin takip edilmesini istiyorsaniz, buraya istediginiz uzantiyi vermelisiniz. Eger bir dosya degil, tüm dosya uzantilarini takip etmek istiyorsaniz “” veya “*.*” degerini vermelisiniz. Veya sadece excel dökümanini takip etmek istiyorsaniz “.xls” uzantisini verebilirsiniz. Yalniz söyle bir durum var ya sadece belirlediginiz tek bir dosya uzantisini takip edebilirsiniz. Ya da tüm dosya uzantilarini takip edebilirsiniz. Yani ben sadece excel ve access dosyalarini takip etmek istiyorum gibi birseye izin verilmiyor. Ya bir dosya uzantisi, yada tüm dosya uzantilarini takip edebilirsiniz.

IncludeSubdirectories: Eger takip edilmesini istediginiz bir klasör veya diskse, bu özelligi true yaparak, alt klasörleri de dinleyebilirsiniz. Yani farzedelim C sürücüsünü dinliyoruz ve IncludeSubdirectories özelligi false. Bu durumda sadece C sürücüsü içindeki islemi dinleyecek. C://Program Files içerisinde bir islem yapilirsa algilamayacaktir. Eger IncludeSubdirectories özelligini true yaparsaniz da C sürücüsü içerisindeki tüm alt klasörlerde de yapilan islemleri algilayacaktir.

Path: Dinlemek istediginiz alan. Buraya bir klasör veya sürücü ismi verebilirsiniz.

EnableRaisingEvents: Olaylarin takip edilip edilmeyecegini bu özellikten ayarliyoruz. Eger false yaparsak dosya ile ilgili islemler sonucunda FileSystemWatcher tepki vermeyecektir. Yani bu özelligi proje çalisir durumdayken true-false yaparak takip etme islemini durdurup-baslatabilirsiniz.

Asagidaki örnegi incelerseniz daha kalici olacaktir:

public voidDinle(string _yol)

{

FileSystemWatcher fsw = newFileSystemWatcher();

fsw.Path = _yol;

fsw.Filter = “*.*”;

fsw.IncludeSubdirectories = true;

fsw.EnableRaisingEvents = true;

 

fsw.Changed += new FileSystemEventHandler(Degisiklik);

fsw.Created += new FileSystemEventHandler(Olusturma);

fsw.Deleted += new FileSystemEventHandler(Silinme);

fsw.Renamed += new RenamedEventHandler(IsimDegisikligi);

}

 

public voidIsimDegisikligi(object sender, RenamedEventArgs e)

{

lbLog.Items.Add(e.Name + ” dosyasininismi degisti”);

}

 

public voidSilinme(object sender, FileSystemEventArgse)

{

lbLog.Items.Add(e.Name + ” dosyasisilindi”);

}

 

public voidOlusturma(object sender, FileSystemEventArgs e)

{

lbLog.Items.Add(e.Name + ” yeni dosyaolusturuldu”);

}

 

public voidDegisiklik(object sender, FileSystemEventArgs e)

{

lbLog.Items.Add(e.Name + ” dosyasindadegisiklik olustu”);

}

 

private voidForm1_Load(object sender, EventArgs e)

{

CheckForIllegalCrossThreadCalls = false;

}