废话不说,直接上代码:
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("删除成功!");
}
}
本文提供了一段使用C++实现的代码,能够递归地删除指定路径下的所有子目录和文件。通过CFileFind类查找指定路径下的所有文件和目录,如果是文件则直接删除,如果是目录则继续递归调用自身方法进行删除,最后删除空目录。
709

被折叠的 条评论
为什么被折叠?



