c# watcher怎樣監(jiān)控文件變化

c#
小樊
81
2024-09-24 17:25:11

在C#中,可以使用FileSystemWatcher類來(lái)監(jiān)控文件的變化。以下是一個(gè)簡(jiǎn)單的示例,演示了如何使用FileSystemWatcher來(lái)監(jiān)控一個(gè)文件夾中的文件變化:

using System;
using System.IO;

namespace FileSystemWatcherExample
{
    class Program
    {
        static void Main(string[] args)
        {
            // 創(chuàng)建一個(gè)新的 FileSystemWatcher 實(shí)例
            using (FileSystemWatcher watcher = new FileSystemWatcher())
            {
                // 設(shè)置要監(jiān)控的文件夾路徑
                watcher.Path = @"C:\example_folder\";

                // 設(shè)置要監(jiān)控的事件類型
                watcher.NotifyFilter = NotifyFilters.LastAccess
                    | NotifyFilters.LastWrite
                    | NotifyFilters.FileName
                    | NotifyFilters.DirectoryName;

                // 注冊(cè)事件處理程序
                watcher.Changed += new FileSystemEventHandler(OnChanged);
                watcher.Created += new FileSystemEventHandler(OnChanged);
                watcher.Deleted += new FileSystemEventHandler(OnChanged);
                watcher.Renamed += new RenamedEventHandler(OnRenamed);

                // 開始監(jiān)控文件夾
                watcher.EnableRaisingEvents = true;

                Console.WriteLine("開始監(jiān)控文件夾:" + watcher.Path);
                Console.WriteLine("按任意鍵退出...");
                Console.ReadKey();
            }
        }

        // 當(dāng)文件或文件夾發(fā)生更改時(shí)觸發(fā)的事件處理程序
        static void OnChanged(object source, FileSystemEventArgs e)
        {
            Console.WriteLine($"文件或文件夾已更改:{e.FullPath}");
        }

        // 當(dāng)文件或文件夾被重命名時(shí)觸發(fā)的事件處理程序
        static void OnRenamed(object source, RenamedEventArgs e)
        {
            Console.WriteLine($"文件或文件夾已重命名:{e.OldFullPath} -> {e.FullPath}");
        }
    }
}

在這個(gè)示例中,我們創(chuàng)建了一個(gè)FileSystemWatcher實(shí)例,并設(shè)置了要監(jiān)控的文件夾路徑。然后,我們?cè)O(shè)置了要監(jiān)控的事件類型(最后訪問(wèn)、最后寫入、文件名和目錄名),并為這些事件注冊(cè)了事件處理程序。最后,我們調(diào)用EnableRaisingEvents方法開始監(jiān)控文件夾。

0