在軟件開發中,我們經常需要監控文件夾中的文件變動情況,比如文件的創建、修改、刪除等。在C#中,`FileSystemWatcher`類提供了一種方便的方式來實現這一功能。本文將通過一個具體的示例,展示如何使用`FileSystemWatcher`來監控文件夾中的文件變動。
這使得我們能夠實時響應文件系統的變動,執行相應的操作。
以下是一個簡單的示例,展示如何使用`FileSystemWatcher`來監控一個文件夾中的`.txt`文件變動情況,并在控制臺輸出變動信息。
```csharp
using System;
using System.IO;
namespace FileSystemWatcherDemo
{
class Program
{
static void Main(string[] args)
{
string pathToWatch = @"C:\path\to\directory";
using (FileSystemWatcher watcher = new FileSystemWatcher())
{
watcher.Path = pathToWatch;
watcher.Filter = "*.txt";
watcher.IncludeSubdirectories = true;
watcher.NotifyFilter = NotifyFilters.LastWrite
| NotifyFilters.FileName
| NotifyFilters.DirectoryName;
watcher.Changed += OnChanged;
watcher.Created += OnChanged;
watcher.Deleted += OnDeleted;
watcher.Renamed += OnRenamed;
watcher.EnableRaisingEvents = true;
Console.WriteLine("Press 'q' to quit the sample.");
while (Console.Read() != 'q') ;
}
}
private static void OnChanged(object source, FileSystemEventArgs e)
{
Console.WriteLine($"File: {e.FullPath} {e.ChangeType}");
}
private static void OnDeleted(object source, FileSystemEventArgs e)
{
Console.WriteLine($"File: {e.FullPath} has been deleted");
}
private static void OnRenamed(object source, RenamedEventArgs e)
{
Console.WriteLine($"File: {e.OldFullPath} renamed to {e.FullPath}");
}
}
}
```
初始化`FileSystemWatcher`對象:首先,我們創建了一個`FileSystemWatcher`對象,并設置了要監控的文件夾路徑。
設置監控參數:我們設置了監控的文件類型為`.txt`,并且監控子目錄。同時,我們設置了監控的事件類型,包括文件的最后寫入時間、文件名和目錄名。
注冊事件處理程序:我們為`Changed`、`Created`、`Deleted`和`Renamed`事件注冊了事件處理程序。當這些事件發生時,相應的事件處理程序會被調用。
開始監控:通過設置`EnableRaisingEvents`屬性為`true`,我們開始了文件監控。
事件處理程序:在事件處理程序中,我們輸出了文件的完整路徑和發生的事件類型,以便我們能夠實時了解文件系統的變動情況。
通過使用`FileSystemWatcher`類,我們可以方便地監控文件夾中的文件變動情況,并根據需要執行相應的操作。這在很多應用場景中都非常有用,比如自動備份、實時同步等。希望這個示例能夠幫助你理解如何使用`FileSystemWatcher`來監控文件系統的變動。
- EOF -
該文章在 2025/6/27 15:26:16 編輯過