簡體   English   中英

FileSystemWatcher

[英]FileSystemWatcher

我需要編寫一些代碼,以便在文件更改時從目錄復制文件。

我知道C / C ++(有點:),但我從未使用過.net。 我認為很好嗎? 首先,我使用FSW創建新線程,然后在發生更改時創建下一個將復制文件的線程?

如果您熟悉C / C ++,則應使用ReadDirectoryChangesW()。 FileSystemWatcher是此API函數的精簡包裝。 但無可否認,它更容易上手。 此處提供示例SDK代碼

FSW / RDC的常見問題是,收到通知時您無法訪問該文件,因為正在編寫文件的應用程序已對其進行鎖定。 您需要一個線程安全的隊列來存儲通知,並由另一個定期嘗試執行所需操作的線程清空。 這也是處理通知時的一種健康方法,您將希望花費盡可能少的時間來避免創建大型通知緩沖區。 它們是昂貴的系統資源。

您所描述的一種模式是讓一個線程使用FileSystemWatcher監視文件,並將事件(或文件)插入隊列,而另一個線程讀取隊列並對事件進行操作。

您處於正確的軌道,因為監視文件系統是一項操作系統功能。 您可以在.NET或直接在本機C ++中使用它。 .NET提供了一個更簡單的編程模型。

請注意,根據您的要求,您可以使用Robocopy(至少在Vista中包含),它可以監視目錄並自動復制文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM