C# Language
FileSystemWatcher
खोज…
वाक्य - विन्यास
- सार्वजनिक FileSystemWatcher ()
- सार्वजनिक FileSystemWatcher (स्ट्रिंग पथ)
- सार्वजनिक FileSystemWatcher (स्ट्रिंग पथ, स्ट्रिंग फ़िल्टर)
पैरामीटर
पथ | फिल्टर |
---|---|
मानक या यूनिवर्सल नामकरण कन्वेंशन (UNC) संकेतन में मॉनिटर करने के लिए निर्देशिका। | देखने के लिए फ़ाइलों का प्रकार। उदाहरण के लिए, "* .txt" सभी पाठ फ़ाइलों में परिवर्तन के लिए देखता है। |
बेसिक FileWatcher
निम्न उदाहरण रन समय में निर्दिष्ट निर्देशिका को देखने के लिए एक FileSystemWatcher
बनाता है। घटक LastWrite और LastAccess समय में परिवर्तन, निर्माण, विलोपन या निर्देशिका में पाठ फ़ाइलों के नाम बदलने के लिए देखने के लिए सेट है। यदि फ़ाइल बदली जाती है, बनाई जाती है, या हटाई जाती है, तो फ़ाइल का पथ कंसोल पर प्रिंट होता है। जब एक फ़ाइल का नाम बदला जाता है, तो पुराने और नए पथ कंसोल पर प्रिंट होते हैं।
इस उदाहरण के लिए System.Diagnostics और System.IO नामस्थान का उपयोग करें।
FileSystemWatcher watcher;
private void watch()
{
// Create a new FileSystemWatcher and set its properties.
watcher = new FileSystemWatcher();
watcher.Path = path;
/* Watch for changes in LastAccess and LastWrite times, and
the renaming of files or directories. */
watcher.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite
| NotifyFilters.FileName | NotifyFilters.DirectoryName;
// Only watch text files.
watcher.Filter = "*.txt*";
// Add event handler.
watcher.Changed += new FileSystemEventHandler(OnChanged);
// Begin watching.
watcher.EnableRaisingEvents = true;
}
// Define the event handler.
private void OnChanged(object source, FileSystemEventArgs e)
{
//Copies file to another directory or another action.
Console.WriteLine("File: " + e.FullPath + " " + e.ChangeType);
}
IsFileReady
FileSystemWatcher के साथ शुरू होने वाले बहुत से लोग एक सामान्य गलती को ध्यान में नहीं रखते हैं कि फ़ाइल बनाते समय FileWatcher ईवेंट को उठाया जाता है। हालाँकि, फ़ाइल को समाप्त होने में कुछ समय लग सकता है।
उदाहरण :
उदाहरण के लिए 1 जीबी का फ़ाइल आकार लें। फ़ाइल प्रोग्राम किसी अन्य प्रोग्राम द्वारा बनाई गई पूछ (Explorer.exe इसे कहीं से कॉपी कर रहा है) लेकिन उस प्रक्रिया को पूरा करने में कुछ मिनट लगेंगे। ईवेंट को उस निर्माण समय को उठाया जाता है और आपको फ़ाइल की प्रतिलिपि तैयार होने के लिए प्रतीक्षा करने की आवश्यकता होती है।
यदि फ़ाइल तैयार है, तो यह जाँचने की एक विधि है।
public static bool IsFileReady(String sFilename)
{
// If the file can be opened for exclusive access it means that the file
// is no longer locked by another process.
try
{
using (FileStream inputStream = File.Open(sFilename, FileMode.Open, FileAccess.Read, FileShare.None))
{
if (inputStream.Length > 0)
{
return true;
}
else
{
return false;
}
}
}
catch (Exception)
{
return false;
}
}