7 觀察檔案的更改

2021-10-07 01:26:21 字數 2418 閱讀 6212

使用filesystemwatcher可以監視檔案的更改。事件在建立、重新命名、刪除和更改檔案時觸發。這可用於如下場景:需要對檔案的變更做出反應,例如,伺服器上傳檔案時,或檔案快取在記憶體中,而快取需要在檔案更改時失效。

因為filesystemwatcher易於使用,所以下面直接開始乙個示例。filemonitor的示例**利用以下命名空間:

system

system.io

示例**在watchfiles()方法中開始觀察檔案。使用filesystemwatcher的建構函式時,可以提**該觀察的目錄。還可以提供乙個過濾器,只過濾出與過濾表示式匹配的特定檔案。當設定屬性includesubdirectories時,可以定義是否應該只觀察指定目錄中的檔案,或者是否還應該觀察子目錄中的檔案。對於created、changed、deleted和renamed事件,提供事件處理程式。所有這些事件的型別都是filesystemeventhandler,只有renamed事件的型別是renamedeventhandler。renamedeventhandler派生自filesystemeventhandler,提供了事件的附加資訊:

private static void watchfiles(string path, string filter)

;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)

");}

重新命名檔案時,通過renamedeventargs引數收到其他資訊。這個型別派生自filesystemeventargs,它定義了檔案原始名稱的額外資訊:

private static void onfilerenamed(object sender, renamedeventargs e)

to ");

}

指定要觀察的資料夾和"*.txt"作為過濾器,啟動應用程式,建立檔案sample1.txt,新增內容,把它重新命名為sample2.txt,最後刪除它,輸出如下。

watching file changes...

file 新建文字文件.txt created

file 新建文字文件.txt renamed to sample1.txt

file sample1.txt changed

file sample1.txt changed

file sample1.txt renamed to sample2.txt

file sample2.txt deleted

完整**:

using system;

using system.io;

using system.threading.tasks;

namespace filemonitor

); await task.whenall(task);

console.readkey();

}private static void watchfiles(string path, string filter)

;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...");

}private static void onfilechanged(object sender, filesystemeventargs e)

");}

private static void onfilerenamed(object sender, renamedeventargs e)

to ");}}

}

觀察日記7

觀察日記7 2018年5月23日 星期三 小雨轉陰 觀察記錄 今天我更加細緻地觀察了小雞的進食狀況 它們圍在 飯盒 旁,啄一下食物,又站起來,在一邊逛逛。接著望望四周,瞧瞧那些對自己特別感興趣的,比自己多了兩條 腿 的動物們。好像在想,它們 怎麼老是盯著我看每次都看了一回,又走了,接著又傳來一陣陣朗...

Win7更改資料夾許可權

win7系統設定當前使用者管理員使用許可權 教程 看了這個以後再也不用修改檔案許可權了 我們對系統中某個資料夾進行訪問 修改 替換或刪除時,經常會遇到需要取得當前用 帳 戶管理員許可權問題,這個問題對於 菜鳥 級別的電腦初學者似乎是個不可逾越的障礙,常常因為這個問題而感到十分棘手和頭疼,雖然現在有比...

git 撤銷更改的檔案

在沒有git add之前 1.撤銷所有更改 git checkout 2.撤銷指定檔案的更改 git checkout file.txt git add之後 git reset head file.txt git push 之後 git reset hard comitthash git log o...