C#-使用FileSystemWatcher类观察监测系统文件和目录的更改
当前位置:点晴教程→知识管理交流
→『 技术文档交流 』
FileSystemWatcher类FileSystemWatcher类的主要功能: 观察文件的更改使用FileSystemWatcher可以监视文件的更改。事件在创建、重命名、删除和更改文件时触发。这可用于如下场景:需要对文件的变更作出反应。例如,服务器上传文件时,或文件缓存在内存中,而缓存需要在文件更改时失效。 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 编辑过 |
关键字查询
相关文章
正在查询... |