LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

C#-使用FileSystemWatcher类观察监测系统文件和目录的更改

admin
2023年12月26日 22:20 本文热度 557

FileSystemWatcher类

FileSystemWatcher类的主要功能:
监控指定文件或目录的文件的创建、删除、改动、重命名等活动。可以动态地定义需要监控的文件类型及文件属性改动的类型。
具体可以参考微软官方文档FileSystemWatcher
Namespace:
System.IO
Assembly:
System.dll
Listens to the file system change notifications and raises events when a directory, or file in a directory, changes.

观察文件的更改

使用FileSystemWatcher可以监视文件的更改。事件在创建、重命名、删除和更改文件时触发。这可用于如下场景:需要对文件的变更作出反应。例如,服务器上传文件时,或文件缓存在内存中,而缓存需要在文件更改时失效。
下面是一个FileMonitor的示例程序:

using System;

using System.IO;


namespace FileMonitor

{

    public class Program

    {

        private static FileSystemWatcher s_watcher;


        public static void Main(string[] args)

        {

        // 监视当前目录下所有的txt文件

            WatchFiles(".", "*.txt");

            Console.ReadLine();

            UnWatchFiles();

        }


        public static void WatchFiles(string path, string filter)

        {

            s_watcher = new FileSystemWatcher(path, filter)

            {

                IncludeSubdirectories = true

            };

            s_watcher.Created += OnFileChanged;

            s_watcher.Changed += OnFileChanged;

            s_watcher.Deleted += OnFileChanged;

            s_watcher.Renamed += OnFileRenamed;

// 启用事件的触发,这一点非常重要

            s_watcher.EnableRaisingEvents = true;

            Console.WriteLine("watching file changes...");

        }


        public static void UnWatchFiles()

        {

            s_watcher.Created -= OnFileChanged;

            s_watcher.Changed -= OnFileChanged;

            s_watcher.Deleted -= OnFileChanged;

            s_watcher.Renamed -= OnFileRenamed;

            s_watcher.Dispose();

            s_watcher = null;

        }


        private static void OnFileRenamed(object sender, RenamedEventArgs e) =>

            Console.WriteLine($"file {e.OldName} {e.ChangeType} to {e.Name}");


        private static void OnFileChanged(object sender, FileSystemEventArgs e) =>

            Console.WriteLine($"file {e.Name} {e.ChangeType}");

    }

}

微软官方示例程序

The following example creates a FileSystemWatcher to watch the directory specified at run time. The component is set to watch for changes in LastWrite and LastAccess time, the creation, deletion, or renaming of text files in the directory. If a file is changed, created, or deleted, the path to the file prints to the console. When a file is renamed, the old and new paths print to the console.

using System;

using System.IO;

using System.Security.Permissions;


public class Watcher

{

    public static void Main()

    {

        Run();

    }


    [PermissionSet(SecurityAction.Demand, Name = "FullTrust")]

    private static void Run()

    {

        string[] args = Environment.GetCommandLineArgs();


        // If a directory is not specified, exit program.

        if (args.Length != 2)

        {

            // Display the proper way to call the program.

            Console.WriteLine("Usage: Watcher.exe (directory)");

            return;

        }


        // Create a new FileSystemWatcher and set its properties.

        using (FileSystemWatcher watcher = new FileSystemWatcher())

        {

            watcher.Path = args[1];


            // 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 += OnChanged;

            watcher.Created += OnChanged;

            watcher.Deleted += OnChanged;

            watcher.Renamed += OnRenamed;


            // Begin watching.

            watcher.EnableRaisingEvents = true;


            // Wait for the user to quit the program.

            Console.WriteLine("Press 'q' to quit the sample.");

            while (Console.Read() != 'q') ;

        }

    }


    // 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: {e.OldFullPath} renamed to {e.FullPath}");

}

参考资料


该文章在 2023/12/26 22:20:30 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2024 ClickSun All Rights Reserved