JN7.net

C# İpuçları – Dosya ve Klasör Değişikliklerini İzleme – Listeleme

Konsol programı gibi çalışa bu kodlarla belirlediğiniz herhangi bir klasörde oluşan değişiklikleri alırsınız. Bu şekilde basit bir antivirüs programı bie yazılabilir.

DizinIceriginiListeyeEkle isimli fonksiyon üst main fonkisyonunda tanımladığınız klasörün içeriğini listeliyor.

DirectoryWatcher ise değişiklikleri izleyen fonksiyon. Klasör içinde yeni bir klasör veya dosya oluşturuğunuzda ve ya herhangi birini değğiştirdiğinizde bunu belirtiyor.

using System; 
using System.IO; 
using System.Threading;  
namespace ConsoleApplication1 {    
 class Program   
  {         
static void Main(string[] args)  
       {      
       // enable watching          
   string dizin ="C:\\Windows";     
        DirectoryWatcher(dizin);       
     DizinIceriginiListeyeEkle(dizin);         
     // again, stupid code to just keep the function alive       
      while (true) { Thread.Sleep(1000); 
}     
    }      
   public static void DizinIceriginiListeyeEkle(string dizin)      
   {          
    string[] dizindekiKlasorler = Directory.GetDirectories(dizin);  
            string[] dizindekiDosyalar = Directory.GetFiles(dizin);    
          foreach (string klasor in dizindekiKlasorler)     
        {                  DirectoryInfo dirInfo = new DirectoryInfo(klasor);  
                string klasorAdi = dirInfo.Name;                 
 DateTime olsTarihi = dirInfo.CreationTime;        
          Console.WriteLine(             "{0} ...{1}...", klasorAdi, olsTarihi);            
  }     
         foreach (string dosya in dizindekiDosyalar)    

         {                 
 FileInfo fileInfo = new FileInfo(dosya);           
       string dosyaAdi = fileInfo.Name;                
  long byteBoyut = fileInfo.Length;           
       DateTime olsTarihi = fileInfo.CreationTime;        
          Console.WriteLine(             "{0} ...{1} ...{2} ...", dosyaAdi, byteBoyut, olsTarihi);       
       }         
 }        
  public static void DirectoryWatcher(string directoryToWatch)    
     {             // check incoming arguments          
   if (string.IsNullOrWhiteSpace(directoryToWatch))  
               throw new ArgumentNullException("directoryToWatch");      
        // create a new FileSystemWatcher      
       FileSystemWatcher w = new FileSystemWatcher();       
       // set the directory to watch             w.Path = directoryToWatch;          
    //this is the heart - setup multiple filters        
     // to watch various types of changes to watch       
      w.NotifyFilter = NotifyFilters.Size |           
  NotifyFilters.FileName |             NotifyFilters.DirectoryName |    
         NotifyFilters.CreationTime;         
     // setup which file types do we want to monitor          
   w.Filter = "*.*";          
    // setup event handlers to watch for changes         
    w.Changed += watcher_Change;             w.Created += watcher_Change;      
       w.Deleted += watcher_Change;             w.Renamed += new RenamedEventHandler(watcher_Renamed);   
           // just some debugging        
     Console.WriteLine(             "Manipulate files in {0} to see activity...", directoryToWatch);    
          // enable watching by allowing events to be raised    
         w.EnableRaisingEvents = true;       
   }     
     static void watcher_Change(object sender,         FileSystemEventArgs e)       
  {         
    Console.WriteLine("{0} changed ({1})", e.Name, e.ChangeType);       
  }       
  static void watcher_Renamed(object sender,         RenamedEventArgs e)        
 {        
     Console.WriteLine("{0} renamed to {1}", e.OldName, e.Name);      

} 
}

Bir önceki yazımız olan Visual C# - Rasgele Sayı Üretme başlıklı makalemizde c# ve tips hakkında bilgiler verilmektedir.

Leave reply

Back to Top