2012-06-17 24 views
21

अब तक मुझे पता है कि FileSystemWatcher फ़ोल्डर में देख सकता है और यदि उस फ़ोल्डर के अंदर की कोई भी फाइल बदल दी गई है, तो संशोधित है, .etc ... तो हम हैंडल कर सकते हैं यह। लेकिन मुझे यकीन नहीं है कि मेरे परिदृश्य में कौन से फ़िल्टर और ईवेंट का उपयोग करना चाहिए: फ़ोल्डर के लिए देखें, अगर उस फ़ोल्डर में फ़ाइल जोड़ दी गई है, तो XYZ करें ... तो मेरे परिदृश्य में मुझे कोई परवाह नहीं है कि कोई मौजूदा फ़ाइल है या नहीं बदल गया, इत्यादि। इसे अनदेखा किया जाना चाहिए ... केवल XYZ करें यदि केवल उस फ़ोल्डर में कोई नई फ़ाइल जोड़ दी गई है ...फाइल सिस्टम सिस्टम का कौन सा फ़िल्टर मुझे नई फाइलें खोजने के लिए उपयोग करने की आवश्यकता है

इस परिदृश्य के लिए आपने कौन सी घटना और फ़िल्टर की सिफारिश की है?

+3

क्या वोट है?!? – Bohn

उत्तर

12

सेट करें द्रष्टा:

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; 

फिर FileCreated प्रतिनिधि को लागू

+5

हम 'NotifyFilter' क्यों सेट करेंगे यदि हम केवल एक फ़ाइल बनने की परवाह करते हैं, बदले नहीं? –

+5

@ जेफब्रिडमैन यह सहज नहीं है, लेकिन NotifyFilter FileSystemWatcher से आने वाली अधिसूचनाओं को ठीक करने के लिए एक तरीका के रूप में कार्य करता है। डिफ़ॉल्ट रूप से, NotifyFilter DirectoryName पर सेट है फ़ाइल नाम | LastWrite। ये आपको फाइल सिस्टम सिस्टम से अपेक्षा की जाने वाली मूल फ़ाइल गतिविधियों को लेने की क्षमता देते हैं: बनाया गया, परिवर्तित, हटाया गया और नामित किया गया। फ़िल्टर/निर्देशिका विशेषताओं के स्पेक्ट्रम को बढ़ाने के लिए फ़िल्टर को सूचित किया जा सकता है, जिस पर निगरानी की जाएगी और विभिन्न घटनाओं को ट्रिगर करने के लिए इनपुट के रूप में उपयोग किया जाएगा। यद्यपि, जैसा कि आप अनुमान लगा सकते हैं, अधिकांश अन्य फ़िल्टर केवल एक बदले हुए "ईवेंट" के परिणामस्वरूप होंगे। – CobaltBlue

+11

स्टैक ओवरफ्लो उत्तर अंततः अन्य साइटों की तुलना में बेहतर होते हैं जो कि एसओ उत्तरों के रूप में गुगल हो सकते हैं क्योंकि समय पर मतदान और अपडेट किया जाता है। –

3

कृपया FileSystemWatcher की एक विस्तृत विवरण के लिए यहाँ देखो: http://www.c-sharpcorner.com/uploadfile/mokhtarb2005/fswatchermb12052005063103am/fswatchermb.aspx

यदि आप जोड़ा फ़ाइलों के लिए देखने के लिए चाहते बनाई गई फ़ाइलों को देखने के लिए होगा।

आप वॉचरChangeType गणना के मान को सेट करके देखने के लिए प्रकार का प्रकार निर्दिष्ट करते हैं। संभावित मान निम्नानुसार हैं:

  • सभी: फ़ाइल या फ़ोल्डर का निर्माण, हटाना, परिवर्तन या नामकरण।
  • परिवर्तित: फ़ाइल या फ़ोल्डर का परिवर्तन। परिवर्तनों के प्रकारों में शामिल हैं: आकार, विशेषताओं, सुरक्षा सेटिंग्स, अंतिम लेखन, और अंतिम पहुंच समय में परिवर्तन।
  • बनाया गया: फ़ाइल या फ़ोल्डर का निर्माण।
  • हटाया गया: फ़ाइल या फ़ोल्डर को हटाने।
  • नामांकित: फ़ाइल या फ़ोल्डर का नामकरण।

इसके अलावा, आप सिर्फ ईवेंट हैंडलर एक फ़ाइल बनाई गई है, तो आग है कि तार हो सकता है (जोड़ा) और सभी अन्य घटनाओं को लागू के बाद से वे आप के लिए दिलचस्प नहीं हैं:

watcher.Created += new FileSystemEventHandler(OnChanged);