試想一個狀況,假如有一個官方的常駐程式,會在有狀況時放置相關檔案到你的硬碟中,你要怎麼去即時知道已經有檔案進來了,以便做後續的處理。一個直覺的想法就是寫一個程式,定期去檢查是否有檔案放到特定目錄之中,這樣做的確可行,但是若是在某次檢查完之後檔案才進來,那就需要再等快一個檢查的週期才會知道有檔案進來了,在一些需要做最即時資料處理的應用中這樣做並不恰當。

今天這個範例是利用.NET Framework中的FileSystemWatcher 類別來進行當目錄或目錄內的檔案變更時,接聽(Listen)檔案系統變更通知並引發事件。在我這個簡單的範例中假設的狀況是在特定的目錄中會在不定時有XML檔案加進來,在新檔案進來後會觸發事件,抓取新進的檔案名稱以便進行後續處理。底下是完整的程式碼

其實在FileSystemWatcher中有許多事件可以使用,但在這個範例中只建立OnChanged事件來使用,就是監控目錄內容有改變時觸發,而在WaitForChanged中只針對Created(新建檔案),而Filter設成"*.xml",在監控目錄中新增出XML檔時會觸發OnChanged事件,以便對新出現的檔案(e.FullPath)進行後續處理,例如"以簡易的方式來解析XML中的資訊"這一篇文章的內容來進行處理

打完了,吔!