1. 程式人生 > >MFC 中 刪除一個非空資料夾 (MFC 檔案操作 一)

MFC 中 刪除一個非空資料夾 (MFC 檔案操作 一)

      最近在看MFC 的檔案操作,從網上淘了一本比較講MFC檔案操作比較全的電子書,然後開始試手。在刪除資料夾時,遇到了問題,通過檢視MSDN和網友的論壇留言,自己總算是解決了這個問題,現在與大家共享。

      MFC中提供了刪除資料夾的一個封裝函式 RemoveDirectory(LPCTSTR lpPathName),我們只要把要刪除的資料夾的路徑傳進去就可以刪除了,貌似一切如此簡單。我象徵性的建立一個資料夾,然後在程式中刪除了它,呵呵,一下就成功了。正當我要轉手去做另外的操作時,我喜歡亂嘗試的毛病就鬼使神差的讓我做了這麼一件事,在這個資料夾下我添加了幾個新的子資料夾以及一些檔案,這下我再試我的程式時就出現問題了,刪不掉了!!

      原來-------RemoveDirectory(LPCTSTR lpPathName)欺騙了我,他只能刪除空的資料夾,這下我有問題了,怎麼才能刪除一個資料夾,即便其中含有無數的子檔案和子資料夾呢?

     RemoveDirectory(LPCTSTR lpPathName) 的這種行為其實是情有可原的,它為我們的操作提供了一種安全級別的控制。

     但我現在就想刪除非空資料夾 , 怎麼辦呢????

     遞迴刪除!!

     看到論壇上有人提出這一思想,我感覺很有道理,於是就基於這一思想,著手實現它!

     首先將資料夾下所有內容刪除,再呼叫RemoveDirectory(LPCTSTR lpPathName)不就可以實現了麼!!

     為此我專門寫了一個函式來遞迴刪除一個資料夾下的所有內容!

     請看我的程式碼

     定義一個 CFileFind 類物件 來找資料夾下的所有子檔案和子資料夾,然後依次判斷它是 檔案 還是 資料夾,

     如果是檔案 就直接刪除了,如果是資料夾就遞迴呼叫 該 myDeleteDirectory()函式,來刪除其內容。然後在呼叫RemoveDirectory()來刪除這個資料夾,這樣不就好了麼?

      為了測試我的程式是否是正確的,我建立了一個資料夾 ForVcTest,在其中添加了許多的子檔案和資料夾,又在子資料夾中添加了檔案和資料夾。寫了這麼一段測試程式,諸位請看:

     測試結果出來了,我眼看著一個內容豐富的資料夾,就在我的程式執行後消失了!真是很舒心啊!呵呵!