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);

 

posted @ 2012-11-13 22:22  lianfei  阅读(22911)  评论(0编辑  收藏  举报
恋飞之家