FileSystemWatcher使用方法

2021-09-08 04:07:17 字數 3825 閱讀 7563

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進行監控。

例項效果:

FileSystemWatcher使用方法具體解釋

filesystemwatcher控制項主要功能 監控指定檔案或資料夾的檔案的建立 刪除 修改 重新命名等活動。能夠動態地定義須要監控的檔案型別及檔案屬性修改的型別。1.經常使用的幾個基本屬性 1 path 設定要監視的資料夾的路徑。2 includesubdirectories 設定是否級聯監視指...

FileSystemWatcher使用方法具體解釋

filesystemwatcher控制項主要功能 監控指定檔案或資料夾的檔案的建立 刪除 修改 重新命名等活動。能夠動態地定義須要監控的檔案型別及檔案屬性修改的型別。1.經常使用的幾個基本屬性 1 path 設定要監視的資料夾的路徑。2 includesubdirectories 設定是否級聯監視指...

FileSystemWatcher使用方法

filesystemwatcher控制項主要功能 監控指定檔案或目錄的檔案的建立 刪除 改動 重新命名等活動。可以動態地定義需要監控的檔案型別及檔案屬性改動的型別。1.常用的幾個基本屬性 1 path 設定要監視的目錄的路徑。2 includesubdirectories 設定是否級聯監視指定路徑中...