Bu site emekli olmuştur. Arşiv amaçlı olarak BT AKADEMİ sponsorluğunda yayın hayatına devam etmektedir.




C#nedir?com
 
YAZAR HAKKINDA
Caner Şahan
Caner Şahan
http://www.csharpnedir.com/
İletişme geçmek için tıklayın.
24 Makalesi yayınlanmakta.
Yazar hakkında detaylı bilgi için tıklayın.
Yayınlanan diğer makaleleri için tıklayın.
İlgili etiketler: degistirme dizininde dizinindeki dosyanin eventleri farkli ilgili izleme kodlari private programimizin public sinifinin static yazdigimiz C# / VC#/.NET Caner Şahan
 
YAZI HAKKINDA
Türü : Makale
Serbest Köşede C#nedir?com üyelerinin hazırladıkları yazılar yayınlanır. Bu yazılar editör incelemesine girmeden yayınlanır.
Seviyesi : Orta
Kategori : C# / VC#/.NET
Yayınlanma Tarihi : 26.9.2004
Okunma Sayısı : 30934
Yorum Sayısı : 3     yorum yaz
Site İçi AramaSİTE İÇİ ARAMA
Üye Girişini AçÜye GİRİŞİ
Üye girişi için tıklayın.
Kullanıcı Adı
Şifre
 
Beni her zaman hatırla
Bir hafta boyunca kullanıcı bilgilerinizi kullanıcı çıkışı yapana kadar hatırlar. (Paylaşılan bilgisayarlarda önerilmez.)
 
Şifremi / Kullanıcı Adımı unuttum.
 
.net TV RSS Serbest KÖŞE (?)
Serbest Köşede C#nedir?com üyelerinin hazırladıkları yazılar yayınlanır. Bu yazılar editör incelemesine girmeden yayınlanır.
emre TAŞ
Silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
Makale Gönder Bende Yazmak İstiyorum
.net TV RSSBlogroll
Turhal Temizer
Conda install environment.yml Package 21.11.2024
Turhal Temizer
Mac OS/X Removing CUDA 21.11.2024
Burak Selim Şenyurt
Rust ile ECS Yaklaşımını Anlamak 21.11.2024
Burak Selim Şenyurt
Birlikte Rust Öğrenelim Serisi 21.11.2024
  Diğer Herşey
Sponsorlar
BT Akademi
Medya Portakal
Video Hosting Sponsoru
Csharpnedir.com bir Ineta üyesidir
Uzman Abi
Her Yönüyle C# - Sefer Algan
FileSystemWatcher ile Dosya Sistemini Gözetleme
 
Kapat
Sayfayı Yazdır Sık Kullanılanlara Ekle Arkadaşıma Gönder MySpace Del.Ico.Us Digg Facebook Google Mixx Reddit StumbleUpon
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.

Genel-> EventHandler FileSystemEventHandler(_event);
isim değişikliği ->EventHandleri RenamedEventHandler(_event);
Genel ->EventArgs FileSystemEventArgs
isim değişikliği-> EventArgs RenamedEventArgs
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;

FileSystemWatcher dosyaizleyici=new FileSystemWatcher(@"C:\dosya");
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);
Örnek uygulamamızdaki FileSystemWatcher nesnesinin Created olayını inceleyelim :

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.  
EventArgs’ı farklı olan Renamed eventi ise (yani isimdegisti fonksiyonu)

private static void isimdegisti(object gelen,RenamedEventArgs e)
{
       Console.WriteLine("{0} dizininde dosyanın ismi değistirlidi",e.Name);
}
 
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;

dosyaizleyici.EnableRaisingEvents=true;//bu özellik true olunca eventler tetiklenmeye başlar.
Örnek programımızın kodları aşağıdadır. Bu örnekte önemli olan nokta FileSystemWatcher sınıfının olaylarıdı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");
        }
   }
}


 
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.

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
  • Yazılan Yorumlar
  • Yorum Yaz
KAS
22
2007
peki dosya açıldı, değiştirildi bu bilgilere ulaşabiliyoruz. Network te dosya kim tarafından açıldı bunu öğrenmek mümkünmü?. filesystemwatcher içerisinde bunu göremedim. Açık olan dosyaları ve kim tarafından açıldığını izlememiz mümkünmü, nasıl?.
EYL
27
2004
cok güzel bir makale caner eline saglik...
Sayfalar : 1 
Yorum yazabilmek için üye girişi yapmalısınız. Üye girişi için tıklayın.
Üye değilseniz Üyel Ol linkine tıklayarak üyeliğinizi hemen başlatabilirisniz.
 
  • Bu Konuda Son 10
  • 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