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


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.