在軟件開發(fā)中,我們經(jīng)常需要監(jiān)控文件夾中的文件變動情況,比如文件的創(chuàng)建、修改、刪除等。在C#中,`FileSystemWatcher`類提供了一種方便的方式來實現(xiàn)這一功能。本文將通過一個具體的示例,展示如何使用`FileSystemWatcher`來監(jiān)控文件夾中的文件變動。
這使得我們能夠?qū)崟r響應(yīng)文件系統(tǒng)的變動,執(zhí)行相應(yīng)的操作。
以下是一個簡單的示例,展示如何使用`FileSystemWatcher`來監(jiān)控一個文件夾中的`.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`對象:首先,我們創(chuàng)建了一個`FileSystemWatcher`對象,并設(shè)置了要監(jiān)控的文件夾路徑。
設(shè)置監(jiān)控參數(shù):我們設(shè)置了監(jiān)控的文件類型為`.txt`,并且監(jiān)控子目錄。同時,我們設(shè)置了監(jiān)控的事件類型,包括文件的最后寫入時間、文件名和目錄名。
注冊事件處理程序:我們?yōu)閌Changed`、`Created`、`Deleted`和`Renamed`事件注冊了事件處理程序。當(dāng)這些事件發(fā)生時,相應(yīng)的事件處理程序會被調(diào)用。
開始監(jiān)控:通過設(shè)置`EnableRaisingEvents`屬性為`true`,我們開始了文件監(jiān)控。
事件處理程序:在事件處理程序中,我們輸出了文件的完整路徑和發(fā)生的事件類型,以便我們能夠?qū)崟r了解文件系統(tǒng)的變動情況。
通過使用`FileSystemWatcher`類,我們可以方便地監(jiān)控文件夾中的文件變動情況,并根據(jù)需要執(zhí)行相應(yīng)的操作。這在很多應(yīng)用場景中都非常有用,比如自動備份、實時同步等。希望這個示例能夠幫助你理解如何使用`FileSystemWatcher`來監(jiān)控文件系統(tǒng)的變動。
- EOF -
該文章在 2025/6/27 15:26:16 編輯過