|  | 
        
            | 
                    
                        | FileSystemWatcher ile Dosya Sistemini Gözetleme |  |  
                        | 
	
    
		
            | Gönderiliyor lütfen bekleyin... | 
 |  | 
        
            | Bazen yazdığımız 
  programlarda programımızın bulunduğu dosyanın içinde bulunan dosyaların durumlarını 
  gözetlemek isteyebiliriz. Örnek : dosya ismi değiştirildi mi,silindi mi,yaratıldı 
  mı yada başka bir yere taşındı mi gibi durumlar. Microsoft böyle bir durumun 
  olacağını düşünerek Framework içinde FileSystemWatcher sınıfını yaratmıştır. 
  FileSystemWatcher sınıfı System.IO.FileSystemWatcher isim uzayı içinde bulunur. 
  Bu yazıda  FileSystemWatcher sınıfının olaylarını(event) ve özelliklerini 
  birlikte inceleyeceğiz. 
 Aşadaki tabloda 
  FileSystemWatcher sınıfının bazı önemli olayları ve EventHandler’ları sıralanmıştır.
 
 
 
  Görüldüğü gibi 
  bir tek isim değişikliğinin  EventArgs ve EventHandleri farklı.Bunun sebebi 
  tamamen sınıfı tasarlayanlanla ilgili ve isim değiştirme özelliğinin diğer özelliklerden 
  biraz farklı çalışması. FileSystemWatcher sınıfının olaylarını incelersek; 
    | Genel-> 
      EventHandler | FileSystemEventHandler(_event); |   
    | isim 
      değişikliği ->EventHandleri | RenamedEventHandler(_event); |   
    | Genel 
      ->EventArgs | FileSystemEventArgs |   
    | isim 
      değişikliği-> EventArgs | RenamedEventArgs |  
 
 
   
    | FileSystemWatcher 
      dosyaizleyici=new FileSystemWatcher(@"C:\dosya"); |  
  Örnek uygulamamızdaki 
  FileSystemWatcher nesnesinin Created olayını inceleyelim : 
    | Yeni 
      dosya yaratma eventi | dosyaizleyici.Created+=new 
      FileSystemEventHandler(yaratildi); |   
    | Dosya 
      silme eventi | dosyaizleyici.Deleted+=new 
      FileSystemEventHandler(silindi); |   
    | Dosya 
      değiştirme eventi | dosyaizleyici.Changed+=new 
      FileSystemEventHandler(degisti); |   
    | Dosyanın 
      ismini değiştirme | dosyaizleyici.Renamed+=new 
      RenamedEventHandler(isimdegisti); |  
 
 
  EventArgs’ı farklı 
  olan Renamed eventi ise (yani isimdegisti fonksiyonu) 
    | private static 
      void yaratildi(object gelen,FileSystemEventArgs e) {
 Console.WriteLine("{0} dizininde yeni 
      dosya oluşturuldu",e.Name);
 }
 //e.Name özelliği o anda kontrol edilen dizini geriye dönen bir özelliktir.
 |  
 
 
  FileSystemWatcher 
  sınıfının bu eventlerinin başlaması için bir bayrak(flag) vardır ve bu özelliğin 
   true 
   yapılması 
  bu eventleri aktif hale getirir.Program bitirilmediği sürece bu sınıftan türemiş nesnenin 
  tüm eventleri çalışır. Eventleri çalıştırmak için; 
    | private static 
      void isimdegisti(object gelen,RenamedEventArgs e) {
 Console.WriteLine("{0} dizininde 
      dosyanın ismi değistirlidi",e.Name);
 }
 
 |  
 
 
  Örnek programımızın 
  kodları aşağıdadır. Bu örnekte önemli olan nokta FileSystemWatcher sınıfının 
  olaylarıdır. 
    | dosyaizleyici.EnableRaisingEvents=true;//bu 
      özellik true olunca eventler tetiklenmeye başlar. |  
 
 
  Programı mono’da 
  derledim yani mcs’i kullandım. Ama aynı kodları csc ilede derlesek te yine çalışacaktır. 
  Çünkü System isim uzaylarını kullandığımız için bir sorun çıkmayacaktır. 
    | //FileSystemWatcher.cs 
      yazan:Caner ŞAHAN 
 using System;
 using System.IO;
 public class izle
 {
 private static void yaratildi(object gelen,FileSystemEventArgs 
      e)
 {
 Console.WriteLine("{0} 
      dizininde yeni dosya olusturuldu",e.Name);
 Console.WriteLine("*******************************************");
 }
 private static void degisti(object gelen,FileSystemEventArgs 
      e)
 {
 Console.WriteLine("{0} 
      dizinindeki dosya degisti",e.Name);
 Console.WriteLine("*******************************************");
 }
 private static void isimdegisti(object gelen,RenamedEventArgs 
      e)
 {
 Console.WriteLine("{0} 
      dizinindeki dosyanın ismi degisti",e.Name);
 Console.WriteLine("*******************************************");
 }
 private static void silindi(object gelen,FileSystemEventArgs 
      e)
 {
 Console.WriteLine("{0} 
      dizinindeki dosya silindi",e.Name);
 Console.WriteLine("*******************************************");
 }
 private static void tetikleme(object gelen,FileSystemEventArgs 
      e)
 {
 Console.WriteLine("{0} dizininde 
      birseyler oluyor",e.Name);
 }
 public static void Main(string[]args)
 {
 string path=args[0];
 try
 {
 FileSystemWatcher 
      dosyaizleyici=new FileSystemWatcher(path);
 dosyaizleyici.Filter="*";
 //
 FileSystemEventHandler 
      tetikle=new FileSystemEventHandler(tetikleme);
 dosyaizleyici.Changed+=tetikle;
 dosyaizleyici.Deleted+=tetikle;
 dosyaizleyici.Created+=tetikle;
 //
 dosyaizleyici.Created+=new 
      FileSystemEventHandler(yaratildi);
 dosyaizleyici.Changed+=new 
      FileSystemEventHandler(degisti);
 dosyaizleyici.Renamed+=new 
      RenamedEventHandler(isimdegisti);
 dosyaizleyici.Deleted+=new 
      FileSystemEventHandler(silindi);
 //
 dosyaizleyici.EnableRaisingEvents=true;
 Console.WriteLine("----------------Dosya 
      izleme basladi----------------");
 Console.WriteLine("Dosya 
      izlemeye alIndI!SonlandIrmak icin herhangibir tusa basInIz!!");
 Console.WriteLine();
 Console.ReadLine();
 Console.WriteLine("---------------Dosya 
      izleme sona erdi---------------");
 }
 catch
 {
 Console.WriteLine("Yol 
      adını giriniz.örnek,C:\\dosya");
 }
 }
 }
 
 
 
 |  
 
  C:\izlenendosya  
  dizinindeki izlenendosya klasörünün içine bir yeni dosya açarak tetikleme 
  ve yaratildi eventleri yakalandı.Console uygulamalarında kodla yaptığımız 
  bütün bu işleri Visual Studio ile de aşadaki şekilde ayarlayabiliriz. 
 
    
 .NET ile 
  ilgili bir konuyu daha aydınlatmış olduk.Hepinize iyi çalışmalar.
 
 Kaynak 
  kod ve örnek uygulama için
 
 
 
                Makale:FileSystemWatcher ile Dosya Sistemini Gözetleme C#, Visual C# ve .NET Caner Şahan
 | 
        
            |  | 
        
            |  | 
        
            | 
                    
                        
                            
                        
                            Eklenen Son 10 
                            Bu Konuda Geçmiş 10 
                        
                            Bu Konuda Yazılmış Yazılmış 10 Makale Yükleniyor
                         
                            Son Eklenen 10 Makale Yükleniyor
                         
                            Bu Konuda Yazılmış Geçmiş Makaleler Yükleniyor
                         | 
        
            |  |