C/C++中刪除文件


在C/C++中刪除文件有三種方式,假設文件路徑及名稱為D:/123.txt,Unicode編碼

第一種,利用系統system函數調用del函數刪除文件。

1 CString strTemp;  // 記錄文件路徑及名稱
2 strTemp.Empty();
3 strTemp.Format(_T("del %s"),_T("D:/123.txt"));
4 system((CW2A)strTemp);

這種方式有個不好的地方時,會彈出dos的黑框,一閃而過,無法做到無痕跡。

第二種,利用C/C++的內部函數,DeleteFile(LPCTSTR lpPath);

這里參數為LPCTSTR類型的,內部有兩個重構的函數,分別對應着UNICODE和ANSI的,這里如果lpPath是CString類型的,可直接帶入,如需轉換。

第三種,利用函數int SHFileOperation(LPSHFILEOPSTRUCT lpFileOp);

有原型可以看出來,參數指向一個SHFILEOPSTRUCT結構體。

typedef struct _SHFILEOPSTRUCT { 
     HWND hwnd;  
     UINT wFunc;  
     LPCWSTR pFrom;
     LPCWSTR pTo;  
     FILEOP_FLAGS fFlags;  
     BOOL fAnyOperationsAborted;
     LPVOID hNameMappings;  
     LPCWSTR lpszProgressTitle;
} SHFILEOPSTRUCT, *LPSHFILEOPSTRUCT;

hwnd是Window 句柄,wFunc可以取值如下:

FO_COPY 
FO_DELETE 
FO_MOVE 
FO_RENAME 

分別對應着文件復制,刪除,移動,重命名。

pForm文件的路徑,pTo一般取NULL,fFlags取值如下:

FOF_ALLOWUNDO 
FOF_NOCONFIRMATION  
FOF_NOCONFIRMMKDIR 
FOF_NOCOPYSECURITYATTRIBS 
FOF_NOERRORUI 
FOF_NORECURSION 
FOF_RENAMEONCOLLISION 

最后函數調用方式是:

SHFILEOPSTRUCT FileOp;

…… // 填充結構體

SHFileOperation(&FileOp);

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM