BOOL IsDirectory(LPCTSTR pstrPath)
{
if (NULL == pstrPath)
{
return FALSE;
}
/*去除路径末尾的反斜杠*/
CString strPath = pstrPath;
if (strPath.Right(1) == _T('\\'))
{
strPath.Delete(strPath.GetLength()-1);
}
CFileFind finder;
BOOL bRet = finder.FindFile(strPath);
if (!bRet)
{
return FALSE;
}
/*判断该路径是否是目录*/
finder.FindNextFile();
bRet = finder.IsDirectory();
finder.Close();
return bRet;
}
/*删除目录及目录中的所有内容*/
BOOL DeleteFolder(LPCTSTR pstrFolder)
{
if ((NULL == pstrFolder))
{
return FALSE;
}
/*检查输入目录是否是合法目录*/
if (!IsDirectory(pstrFolder))
{
return FALSE;
}
/*创建源目录中查找文件的通配符*/
CString strWildcard(pstrFolder);
if (strWildcard.Right(1) != _T('\\'))
{
strWildcard += _T("\\");
}
strWildcard += _T("*.*");
/*打开文件查找,查看源目录中是否存在匹配的文件*/
/*调用FindFile后,必须调用FindNextFile才能获得查找文件的信息*/
CFileFind finder;
BOOL bWorking = finder.FindFile(strWildcard);
while (bWorking)
{
/*查找下一个文件*/
bWorking = finder.FindNextFile();
/*跳过当前目录“.”和上一级目录“..”*/
if (finder.IsDots())
{
continue;
}
/*得到当前目录的子文件的路径*/
CString strSubFile = finder.GetFilePath();
/*判断当前文件是否是目录,*/
/*如果是目录,递归调用删除目录,*/
/*否则,直接删除文件*/
if (finder.IsDirectory())
{
if (!DeleteFolder(strSubFile))
{
finder.Close();
return FALSE;
}
}
else
{
if (!DeleteFile(strSubFile))
{
finder.Close();
return FALSE;
}
}
} /*while (bWorking)*/
/*关闭文件查找*/
finder.Close();
/*删除空目录*/
return RemoveDirectory(pstrFolder);
}