标签:删除目录
用到shlwapi.h和tchar.h头文件。
shlwapi.h是shlwapi.dll头文件,shlwapi.dll(Microsoft Shell Light-weight Utility Library)中定义了路径相关的操作,也包括了部分文件操作函数。由于shlwapi.dll属于Microsoft Windows Shell,因此这些文件操作特点与通过Shell进行文件操作类似。
下面列出部分常用的文件操作相关函数。
函数名 | 作用 |
---|---|
PathIsDirectory | 判断一个路径是否有效目录 |
PathIsDirectoryEmpty | 判断一个路径是否空目录 |
PathFileExists | 判断一个路径是否有效目录或文件 |
PathRenameExtension | 更改文件的后缀名 |
SHFileOperation | 可实现文件或目录的复制、移动、重命名和删除操作,并可一次操作多个文件或目录 |
其中,SHFileOperation可实现整个目录的内容的复制和删除。SHFileOperation可一次实现多个目录的复制或删除,其输入参数结构体SHFILEOPSTRUCT中的pFrom(源目录)和pTo(目的目录)都可以输入多个目录,目录之间通过’\0’分割,pFrom和pTo必须以2个’\0’结尾。一般情况下,我们都只是对一个目录操作,因此,SHFileOperation调用并不是很方便,下面就对SHFileOperation进行包装,提供更方便调用的目录操作函数。
BOOL SHDeleteFolder(LPCTSTR pstrFolder)
{
int iPathLen = _tcslen(pstrFolder);
TCHAR tczFolder[MAX_PATH+1];
SHFILEOPSTRUCT FileOp;
if ((NULL == pstrFolder))
{
return FALSE;
}
if (iPathLen >= MAX_PATH)
{
return FALSE;
}
/*确保目录的路径以2个\0结尾*/
ZeroMemory(tczFolder, (MAX_PATH+1)*sizeof(TCHAR));
_tcscpy(tczFolder, pstrFolder);
tczFolder[iPathLen] = _T(‘\0‘);
tczFolder[iPathLen+1] = _T(‘\0‘);
ZeroMemory(&FileOp, sizeof(SHFILEOPSTRUCT));
FileOp.fFlags |= FOF_SILENT; //不显示进度
FileOp.fFlags |= FOF_NOERRORUI; //不报告错误信息
FileOp.fFlags |= FOF_NOCONFIRMATION; //直接删除,不进行确认
FileOp.hNameMappings = NULL;
FileOp.hwnd = NULL;
FileOp.lpszProgressTitle = NULL;
FileOp.wFunc = FO_DELETE;
FileOp.pFrom = tczFolder; //要删除的目录,必须以2个\0结尾
FileOp.pTo = NULL;
FileOp.fFlags &= ~FOF_ALLOWUNDO; //直接删除,不放入回收站
/*删除目录*/
if (0 == SHFileOperation(&FileOp))
{
return TRUE;
}
else
{
return FALSE;
}
}
int main()
{
SHDeleteFolder("D:\\removeFile");
return 0;
}
标签:删除目录
原文地址:http://blog.csdn.net/jeanphorn/article/details/44921315