2012-12-06 22 views

回答

6

在Windows上,請看SHChangeNotifyRegister()。它不僅告訴你發生了什麼樣的改變,而且它還告訴你哪個確切的文件被改變了。

+0

這項工作在窗口Vista還是七?以及當文件系統或某個特定目錄中的任何文件發生更改時,如何使用此功能獲取事件? – lebron2323

+1

最後一個參數指定您要監視的文件夾。要監視整個文件系統,可以爲每個本地驅動器盤符創建一個條目(跳過映射的驅動器盤符),或者將其路徑設置爲NULL的單個條目創建(但您將收到來自所有shell對象的通知,而不僅僅是本地文件系統) 。 –

5

您可能正在尋找Win32 Directory Change Notifications。還有一個名爲FileSystemWatcher的.NET API公開了相同的功能。

鏈接頁面爲訂閱文件系統通知提供了一個很好的示例。要想更深入地訪問文件系統更改,您必須查看Change Journals。該API非常複雜,因此第一個目錄更改通知可能是您開始的最佳位置。

爲了提及它,Linux內核有一個稱爲inotifiy的子系統。

+0

目錄更改通知僅在創建或刪除了某個文件的情況下才通知。這很酷,謝謝!但我需要這樣的東西,但改變文件內容。 – lebron2323

+2

它還允許您使用['FILE_NOTIFY_CHANGE_LAST_WRITE'](http://msdn.microsoft.com/zh-cn/library/windows/desktop/aa365465%28v=vs.85%29)查看該樹中的文件更改。 aspx)標誌。但是,您必須注意有關文件系統緩存的警告。 –

相關問題