MFCS删除文件夹,非空文件夹

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

  

原文地址:https://www.cnblogs.com/XiHua/p/13619950.html