废话不说,直接上代码:
void CFileOrDirectoryOP::RecursiveDelete(CString szPath)
{
CFileFind filefind;
CString path = szPath;
if (path.Right(1) != "\\")//目录的最右边需要“\”字符
path += "\\";
path += "*.*";
BOOL res = filefind.FindFile(path);
while (res)
{
res = filefind.FindNextFile();
//是文件时直接删除
if (!filefind.IsDots() && !filefind.IsDirectory())
DeleteFile(filefind.GetFilePath());//删除文件
else if (filefind.IsDots())
continue;
else if (filefind.IsDirectory())//为目录
{
path = filefind.GetFilePath();
//是目录时继续递归,删除该目录下的文件
RecursiveDelete(path);
//目录为空后删除目录
RemoveDirectory((LPCTSTR)path);
}
}
}
然后直接调入递归方法,binggo,完事。
void CFileOrDirectoryOP::DeleteFold(CString szPath)
{
RecursiveDelete(szPath);
//最终目录被清空了,于是删除该目录
if (RemoveDirectory((LPCTSTR)szPath))
{
AfxMessageBox("删除成功!");
}
}