FileSystemWatcher使用方法具體解釋

2021-09-06 23:05:10 字數 3805 閱讀 4437

filesystemwatcher控制項主要功能:

監控指定檔案或資料夾的檔案的建立、刪除、修改、重新命名等活動。能夠動態地定義須要監控的檔案型別及檔案屬性修改的型別。

1.經常使用的幾個基本屬性:

(1) path :設定要監視的資料夾的路徑。

(2) includesubdirectories :設定是否級聯監視指定路徑中的子資料夾。

(3) filter :設定篩選字串,用於確定在資料夾中監視哪些型別的檔案。

(4) notifyfilter :設定檔案的哪些屬性的變動會觸發changed事件,同一時候監控多個屬性變動能夠按「或」組合。(預設值為 notifyfilter.lastwrite | notifyfilter.filename | notifyfilter.directoryname 組合)

子項: attributes           --  檔案或目錄的屬性。  

creationtime   --  檔案或目錄的建立時間。  

directoryname

--  資料夾名。(經常使用)

filename          --  檔名稱。

(經常使用)

lastaccess       --  檔案或目錄上一次開啟的日期。  

lastwrite           --  上一次向檔案或目錄寫入內容的日期。  

security              --  檔案或目錄的安全設定。  

size                    --   檔案或目錄的大小。 (經常使用)

(5) enableraisingevents :設定是否開始監控。(默覺得false)

2.經常使用事件:

(1) changed  :當更改檔案和資料夾時發生,能夠通過notifyfilter屬性設定觸發該事件的須要檔案更改的屬性。

(2) created  :  當建立檔案和資料夾時發生。 

(3) deleted :    刪除檔案或資料夾時發生。 

(4) renamed  :重新命名檔案或資料夾時發生。

(5) filesystemeventargs 物件:

成員:name:     獲取受影響的檔案或資料夾的名稱。 注意:假設是級聯監控子資料夾的話,該值為從監控資料夾的下個資料夾到受影響的檔案的路徑,而不僅僅是受影響的檔名稱。

fullpath : 獲取受影響的檔案或資料夾的全然限定的路徑。 

changetype :獲取受影響的檔案或資料夾的發生的事件型別。

子項:all                 -- 檔案或目錄的建立、刪除、更改或重新命名。  

changed     -- 檔案或目錄的更改。更改的型別包含大小、屬性、安全設定、近期寫入時間和近期訪問時間方面的更改。  

created       -- 檔案或目錄的建立。  

deleted       --  檔案或目錄的刪除。  

renamed   --  檔案或目錄的重新命名。  

(6) renamedeventargs 物件:

成員:name:           獲取受影響的檔案或資料夾的新名稱。 

oldname :    獲取受影響的檔案或資料夾的舊名稱。

fullpath :      獲取受影響的檔案或資料夾的全然限定的路徑。

oldfullpath : 獲取受影響的檔案或資料夾的前乙個全然限定的路徑。

changetype :獲取受影響的檔案或資料夾的發生的事件型別。

子項:all                 -- 檔案或目錄的建立、刪除、更改或重新命名。  

changed     -- 檔案或目錄的更改。更改的型別包含大小、屬性、安全設定、近期寫入時間和近期訪問時間方面的更改。  

created       -- 檔案或目錄的建立。  

deleted       --  檔案或目錄的刪除。  

renamed   --  檔案或目錄的重新命名。 

演示源**:

private delegate void setlogtextdelegate(filesystemeventargs e); //宣告傳遞filesystemeventargs物件的託付,用於檔案created,deleted和changed變動時更新ui介面。

private delegate void renameddelegate(renamedeventargs e); //宣告傳遞renamedeventargs物件的託付,用於檔案renamed時更新ui介面。

filesystemwatcher fsw= new filesystemwatcher();

fsw.path = 「c:\\」; //設定監控的檔案資料夾

fsw.includesubdirectories = true; //設定監控c盤資料夾下的全部子資料夾

fsw.filter = "*.txt|*.doc|*.jpg"; //設定監控檔案的型別

fsw.notifyfilter = notifyfilters.filename | notifyfilters.directoryname | notifyfilters.size; //設定檔案的檔名稱、資料夾名及檔案的大小修改會觸發changed事件

fsw.created += new filesystemeventhandler(this.filesystemwatcher_eventhandle); //繫結事件觸發後處理資料的方法。

fsw.deleted += new filesystemeventhandler(this.filesystemwatcher_eventhandle);

fsw.changed += new filesystemeventhandler(this.filesystemwatcher_eventhandle);

fsw.renamed += new renamedeventhandler(this.filesystemwatcher_renamed); //重新命名事件與增刪改傳遞的引數不一樣。

fsw.enableraisingevents = true; //啟動監控

private void filesystemwatcher_eventhandle(object sender, filesystemeventargs e) //檔案增刪改時被呼叫的處理方法

); //使用託付將方法封送到ui主線程處理

}}private void filesystemwatcher_renamed(object sender,renamedeventargs e) //檔案重新命名時被呼叫的處理方法

); //使用託付將方法封送到ui主線程處理

}}private void setlogtext(filesystemeventargs e) //更新ui介面

private void setrenamedlogtext(renamedeventargs e) //更新ui介面

重點:

1.、由於filesystemwatcher類本身就是多執行緒的控制項,也就是每例項化乙個filesystemwatcher自己主動就會建立一條執行緒。

2、我們須要利用託付進行跨執行緒更新ui介面,由於重新命名事件傳遞的是renameeventargs物件,而建立、改動、刪除事件傳遞的是fileeventargs物件,所以須要宣告兩個託付。

3、假設須要同一時候監控多個檔案(如監控系統全盤),僅僅須要建立filesystemwatcher陣列,每乙個檔案用乙個filesystemwatcher進行監控。

例項效果:

safearray 的具體使用方法

學會使用safearray也是很重要的,因為在ado程式設計中經常要用。它的主要目的是用於automation中的陣列型引數的傳遞。因為在網路環境中,陣列是不能直接傳遞的,而必須將其包裝成safearray。實質上safearray就是將通常的陣列增加乙個描述符,說明其維數 長度 邊界 元素型別等資...

解「冰刃」的使用方法

冰刃 icesword是一斬斷 的利刃 它適用於windows 2000 xp 2003作業系統,用於查探系統中的幕後 木馬後門 並作出處理,當然使用它需要使用者有一些作業系統的知識。在對軟體做講解之前,首先說明第一注意事項 此程式執行時不要啟用核心偵錯程式 如softice 否則系統可能即刻崩潰。...

cvLine函式的使用方法 具體引數

功能 繪製連線兩個點的線段 函式原型 void cvline cvarr img,cvpoint pt1,cvpoint pt2,cvscalar color,int thickness 1,int line type 8,int shift 0 引數說明 img 影象。pt1 線段的第乙個端點。p...