文件夾監視及文件刪除的簡易方法

文件夾監視及文件刪除的簡易方法

這幾天學習了一些關於文件的操作,在這裏做個總結。
 
 我想實現這樣的功能:當特定的文件夾Pic當檢測到有文件(保證傳進來的是圖片)進來時,得到該文件的絕對路徑,並把它傳入void MoveControl(char *path); 處理,然後刪除該圖片文件。
 
 在MFC中,如果想監視一個文件夾,以此瞭解在該文件夾中是否有文件加入或刪除、重命名等操作,需要開一個子線程,把代碼寫在裏面並用while(true)嵌套。
 
 監視文件夾的API,我知道有兩個——ReadDirectoryChangesW 和 FindFirstChangeNotification。覺得ReadDirectoryChangesW複雜就用FindFirstChangeNotification來寫了。

首先調用FindFirstChangeNotification來告訴系統,我們的程序對於文件系統的變化消息感興趣,此函數返回一個句柄,可以將它用於WaitForSingleObject或者WaitForMultipleObject的一些線程同步函數,一旦事件變成了有信號,便可得知文件系統有了變化,就可以漫遊目錄來得到新的信息。當這些處理完成後,再調用FindNextChangeNotification即可。
   
    The FindNextChangeNotification function requests that the operating system signal a change notification handle the next time it detects an appropriate change.

 

 

 

在利用unicode編程時候,常常要涉及幾種字符類型的轉化,此時要用到 WideCharToMultiByte 或者  MultiByteToWideChar ,也可能在一些字符串前寫TEXT(),這裏就不多說了。

在MFC中,有一個CFileFind的類,用它可以很方便的獲取某個文件夾中的所有文件的名字。

 

刪除文件用CFile中的靜態函數即可完成:

 

 程序寫完後,剛開始運行幾次結果很理想。但是隨後發現有時候往Pic裏拖入圖片程序沒有反應。暫時想不明白是什麼原因,我估計是線程函數的優先級過低。

發佈了36 篇原創文章 · 獲贊 52 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章