ফাইল পরিবর্তন হলে নোটিফিকেশন?


111

ডিস্কে কোনও ফাইল সংশোধন করার পরে কি এমন কোনও ব্যবস্থা আছে যার দ্বারা আমাকে অবহিত করা যেতে পারে (সি # তে)?


1
ফাইলসিস্টেমওয়াটার ক্লাস এবং এটি উত্থাপিত ইভেন্টগুলির আরও তথ্যের জন্য এই উত্তরটি দেখুন ।
ChrisF

উত্তর:



204

আপনি FileSystemWatcherক্লাস ব্যবহার করতে পারেন ।

public void CreateFileWatcher(string path)
{
    // Create a new FileSystemWatcher and set its properties.
    FileSystemWatcher 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 handlers.
    watcher.Changed += new FileSystemEventHandler(OnChanged);
    watcher.Created += new FileSystemEventHandler(OnChanged);
    watcher.Deleted += new FileSystemEventHandler(OnChanged);
    watcher.Renamed += new RenamedEventHandler(OnRenamed);

    // Begin watching.
    watcher.EnableRaisingEvents = true;
}

// Define the event handlers.
private static void OnChanged(object source, FileSystemEventArgs e)
{
    // Specify what is done when a file is changed, created, or deleted.
   Console.WriteLine("File: " +  e.FullPath + " " + e.ChangeType);
}

private static void OnRenamed(object source, RenamedEventArgs e)
{
    // Specify what is done when a file is renamed.
    Console.WriteLine("File: {0} renamed to {1}", e.OldFullPath, e.FullPath);
}

11
সুন্দর উদাহরণের জন্য ধন্যবাদ। আমি আরও উল্লেখ করব যে আপনি যদি পরিবর্তনগুলি দেখার জন্য কোনও ব্লকিং (সিঙ্ক্রোনাস) উপায়ের সন্ধান করে থাকেন তবে ফাইলসিস্টেমওয়াটারে ওয়েটফোরচ্যাঞ্জড পদ্ধতিটি ব্যবহার করতে পারেন।
মার্ক মেউর

22
এই উদাহরণের জন্য ধন্যবাদ। এমএসডিএন এখানে বেশ একই রকম আছে । এছাড়াও, কিছু লোক পুরো ডিরেক্টরি গাছ দেখতে চাইতে পারে - watcher.IncludeSubdirectories = true;এটি অর্জনের জন্য ব্যবহার করুন ।
অলিভার

1
OnChangeপ্রকৃত পরিবর্তন ছাড়াই আগুন ( যেমন: ctrl+sকোনও প্রকৃত পরিবর্তন ছাড়াই আঘাত করা ), জাল পরিবর্তনগুলি সনাক্ত করার কোনও উপায় আছে কি?
মেহেদী দেহঘানি

1
@ মেহেদীদেহঘানি: আমি জানি না, একমাত্র উপায়টি আসলে ফাইলের স্ন্যাপশট রাখা এবং বাইট-ওয়াইনের বর্তমান (সম্ভবত) পরিবর্তিত সংস্করণটির সাথে তুলনা করা। FileSystemWatcherশুধুমাত্র ফাইল সিস্টেম পর্যায়ে ঘটনা সনাক্ত করতে সক্ষম (অর্থাত ওএস এমন একটি ইভেন্টের আরম্ভ করে থাকেন) হয়। আপনার ক্ষেত্রে সিটিআরএল + এস এ জাতীয় ঘটনা ট্রিগার করে (তা ঘটুক বা না আসল প্রয়োগের উপর নির্ভর করে)।
ডিস্ক ভোলমার

ফাইলসিস্টেমওয়াটার কি ক্রস প্ল্যাটফর্ম?
ভিনিগাস

5

ব্যবহার করুন FileSystemWatcher। আপনি শুধুমাত্র সংশোধনী ইভেন্টের জন্য ফিল্টার করতে পারেন।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.