C# 观察文件的更改
使用 FileSystemWatcher 可以監(jiān)視文件的更改。事件在創(chuàng)建、重命名、刪除和更改文件時觸發(fā)。這可用于如下場景:需要對文件的變更做出反應(yīng),例如,服務(wù)器上傳文件時,或文件緩存在內(nèi)存中,而緩存需要在文件更改時失效。
因為 FileSystemWatcher 易于使用,所以下面直接開始一個示例。FileMonitor的示例代碼利用以下名稱空間:?
System System.IO示例代碼在 WatchFiles() 方法中開始觀察文件。使用 FileSystemWatcher 的構(gòu)造函數(shù)時,可以提供應(yīng)該觀察目錄。還可以提供一個過濾器,只過濾出與過濾表達(dá)式匹配的特定文件。當(dāng)設(shè)置屬性 IncludeSubdirectories 時,可以定義是否應(yīng)該只觀察指定目錄中的文件,或者是否還應(yīng)該觀察子目錄中的文件。對于Created、Changed、 Deleted 和 Renamed 事件,提供事件處理程序。所有這些事件的類型都是 FileSystemEventHandler,只有 Renamed事件的類型是RenamedEventHandler。RenamedEventHandler 派生自 FileSystemEventHandler,提供了事件的附加信息:
private?static?FileSystemWatcher?s_watcher;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..."); }因文件變更而接收到的信息是 FileSystemEventArgs 類型。它包含了變更文件的名字,這種變更是一個 WatcherChangeTypes 類型的枚舉:
private static void OnFileChanged(object sender, FileSystemEventArgs e) {Console.WriteLine($"file {e.Name} {e.ChangeType}"); }重命名文件時,通過 RenamedEventArgs 參數(shù)收到其他信息。這個類型派生自FileSystemEventArgs,它定義了文件原始名稱的額外信息:
private static void OnFileRenamed(object sender, RenamedEventArgs e) {Console.WriteLine($"file?{e.OldName}?{e.ChangeType}?to?{e.Name}"); }指定要觀察的文件夾和 *.txt 作為過濾器,啟動應(yīng)用程序,創(chuàng)建文件 samplel.txt,添加內(nèi)容,把它重命名為 sample2.txt,最后刪除它,輸出如下。
watching file changes... file New Text Document.txt Created file New Text Document.txt Renamed to samplel.txt file samplel.txt Changed file samplel.txt Changed file?samplel.txt?Renamed?to?sample2.txt? file?sample2.txt Deleted?微信公眾號?
Dotnet講堂
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎總結(jié)
以上是生活随笔為你收集整理的C# 观察文件的更改的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Foundatio - .Net Cor
- 下一篇: .NET 6 使用 Obfuscar 进