MFC 刪除具有子資料夾或資料夾內有子檔案的方法

2021-06-02 06:58:09 字數 1132 閱讀 3897

比如我的d盤裡有乙個檔案d:\test,此時test為乙個空資料夾:

建立此資料夾的方法為:

createdirectory(_t("d:\\test"),null);

刪除此空資料夾的方法為:

removedirectory((_t("d:\\test"));

這只能刪除資料夾內毫無內容的空資料夾,不能刪除具有子資料夾或子檔案的資料夾.

這裡使用 shfileoperation 這個方法,但是用的是它的引數結構體:

函式原型:

#include

winshellapi int winapi shfileoperation(lpshfileopstruct lpfileop);

shfileopstruct

此結構體原型為:

typedef struct _shfileopstruct
shfileopstruct, far *lpshfileopstruct
比如現在的刪除資料夾函式為

bool deletefolderdirectory( lpctstr lpszpath)

shfileopstruct fileop;

zeromemory((void*)&fileop,sizeof(shfileopstruct));

fileop.flag = fof_noconfirmation;

這個函式就可以刪除具有子資料夾或檔案的資料夾了.

但是對於 shfileopstruct 有乙個要求,就是

pform 或者pto 可以指定多個路徑,在結束之前要加 '\0\0';才可以正常結束,

因為我使用的是cstring 型別的字串處理,它結束時候的處理是不一樣的,cstring 內部處理是乙個 char* ,然後結束是加了乙個'\0'結束的,

因此將 cstring 型別的變數 其內容拷貝到陣列當中:

tchar arrtemp[100] = ;

memcpy(arrtemp,folderpath+_t("\0\0"),(folderpath.getlength()+2)*sizeof(tchar));

deletefolderdirectory(arrtemp);

這樣就不會報讀取磁碟錯誤的報告了.

刪除子資料夾

你是一位系統管理員,手裡有乙份資料夾列表 folder,你的任務是要刪除該列表中的所有 子資料夾,並以 任意順序 返回剩下的資料夾。我們這樣定義 子資料夾 如果資料夾 folder i 位於另乙個資料夾 folder j 下,那麼 folder i 就是 folder j 的子資料夾。資料夾的 路徑...

利用遞迴刪除資料夾(資料夾中套資料夾)

刪除目錄 bool deldir const ansistring p if p.isempty p.length 4 return false 引數必須大於3,即不能為磁碟根目錄或空白 int len p.length char path p.c str ansistring dir ansist...

建立或刪除資料夾

1.在實現上傳功能時,總會用到檢查指定目錄是否存在,如果存在,刪除並重新建立乙個空的資料夾 todo 判斷資料夾是否存在,如果存在刪除,並重新建立乙個空的資料夾 author eagle param path 檔案路徑 private void createfolder string path el...