C# 观察文件的更改
使用 FileSystemWatcher 可以監視文件的更改。事件在創建、重命名、刪除和更改文件時觸發。這可用于如下場景:需要對文件的變更做出反應,例如,服務器上傳文件時,或文件緩存在內存中,而緩存需要在文件更改時失效。
因為 FileSystemWatcher 易于使用,所以下面直接開始一個示例。FileMonitor的示例代碼利用以下名稱空間:?
System System.IO示例代碼在 WatchFiles() 方法中開始觀察文件。使用 FileSystemWatcher 的構造函數時,可以提供應該觀察目錄。還可以提供一個過濾器,只過濾出與過濾表達式匹配的特定文件。當設置屬性 IncludeSubdirectories 時,可以定義是否應該只觀察指定目錄中的文件,或者是否還應該觀察子目錄中的文件。對于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 參數收到其他信息。這個類型派生自FileSystemEventArgs,它定義了文件原始名稱的額外信息:
private static void OnFileRenamed(object sender, RenamedEventArgs e) {Console.WriteLine($"file?{e.OldName}?{e.ChangeType}?to?{e.Name}"); }指定要觀察的文件夾和 *.txt 作為過濾器,啟動應用程序,創建文件 samplel.txt,添加內容,把它重命名為 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講堂
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的C# 观察文件的更改的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Foundatio - .Net Cor
- 下一篇: c# char unsigned_dll