2012-06-17 6 views
21

bulmak için kullanmak gerekiyor o. Ancak senaryoda hangi filtreyi ve olayı kullanacağımı bilmiyorum: Bir Klasörün İzlenmesi, Bu klasöre bir dosya eklendiyse, XYZ yapın ... Bu durumda, varolan bir dosya olup olmadığını umurumda değil değişti, etc..those göz ardı edilmelidir ... sadece XYZ yaparsanız ve sadece yeni bir dosya ... o Klasörüne eklenmişse, bu senaryo için önerilen do etkinlik ve filtreBen yeni dosyalar Şimdiye kadar FileSystemWatcher bir klasöre bakabilirsiniz ve bu klasörün içindeki dosyaların herhangi değiştirilirse, değiştirir, vs. ... sonra işleyebilir biliyoruz

?

+3

Aşağıya oy nedir?!?! – Bohn

cevap

12

kurun gözlemcisi:

private void OnChanged(object source, FileSystemEventArgs e) { 
    Console.WriteLine("File: " + e.FullPath + " " + e.ChangeType); 
} 
:

FileSystemWatcher watcher = new FileSystemWatcher(); 
watcher.Path = "Blah"; 

watcher.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite 
    | NotifyFilters.FileName; 

watcher.Created += new FileSystemEventHandler(OnChanged); 

watcher.EnableRaisingEvents = true; 

Sonra FileCreated temsilci uygulamak

+5

Neden sadece bir dosyanın oluşturulup değiştirilmediğini dikkate alırsak, 'NotifyFilter' değerini ayarlayalım mı? –

+5

@JeffBridgman Bu sezgisel değil, ancak NotifyFilter FileSystemWatcher gelen bildirimleri ince ayar için bir yol olarak hizmet vermektedir. Varsayılan olarak, NotifyFilter DirectoryName | DosyaAdı | LastWrite. Bunlar, FileSystemWatcher'dan beklediğiniz çekirdek dosya etkinliklerini alma olanağı sağlar: Oluşturuldu, Değiştirildi, Silindi ve Yeniden Adlandırıldı. Bildirim Filtresi, çeşitli olayları tetiklemek için izlenecek ve girdi olarak kullanılacak dosya/dizin özelliklerinin spektrumunu artırmak için değiştirilebilir. Her ne kadar tahmin edebileceğiniz gibi, diğer filtrelerin çoğu sadece bir Değişen "olay ile sonuçlanacaktır. – CobaltBlue

+11

Stackoverflow cevapları, Neredeyse, SO yanıtlarının zaman içinde oylanıp güncellendiği gibi, diğer birçok siteden daha iyidir. –

3

FileSystemWatcher ayrıntılı bir açıklama için buraya bakınız: Eğer eklenen dosyalar için bakmak isterseniz oluşturulan dosyalar için aramak zorunda kalacak http://www.c-sharpcorner.com/uploadfile/mokhtarb2005/fswatchermb12052005063103am/fswatchermb.aspx

.

Bir WatcherChangeType numaralandırma değeri ayarlayarak izlemek için değişim türünü belirtin.

  • Tümü:: Dosya veya klasörün oluşturulması, silinmesi, değişikliği veya yeniden adlandırma aşağıdaki gibi olası değerlerdir.
  • Değiştirildi: Bir dosya veya klasörün değiştirilmesi. Değişiklik türleri şunları içerir: boyut, özellik, güvenlik ayarları, son yazma ve son erişim zamanı.
  • Oluşturuldu: Bir dosya veya klasörün oluşturulması.
  • Silindi: Bir dosya veya klasörün silinmesi.
  • Yeniden adlandırılmış: Bir dosya veya klasörün yeniden adlandırılması. onlar sizin için ilginç olmadığından

Ayrıca sadece bir dosya oluşturulur eğer patlar olay işleyicisi kadar Tel olabilir (eklendi) ve tüm diğer etkinlikleri uygulamak:

watcher.Created += new FileSystemEventHandler(OnChanged); 
İlgili konular