1, Windows API 有RemoveDirectory函数,但是此函数只能删除具有权限的文件夹。一般空文件夹是可以删除的,而在“文件夹1”中只有一个“空文件夹2”,却不能用此函数删除文件夹1。
2, 用递归的方法。
删除文件夹,计算文件夹的大小等等都是用递归的方法。
从原理上讲,使用递归方式遍历目录树,先删除一个目录里的所有文件,然后删除目录。删除文件和空目录用DeleteFile和RemoveDirectory。
BOOL CDeleteProjectDlg::deleteFolder( CString strFolderPath )
{
WIN32_FIND_DATA fd;
HANDLE hFind;
if(strFolderPath.Right(1) != "//")
{
strFolderPath += "//";
}
hFind = FindFirstFile(strFolderPath + "*.*",&fd);
if (hFind != INVALID_HANDLE_VALUE)
{
while (FindNextFile(hFind, &fd))
{
//is directory?
if (fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{
CString name;
name = fd.cFileName;
//is "." or ".."
if ((name != ".") && (name != ".."))
{
//is directory, recursion
deleteFolder(strFolderPath + fd.cFileName + "//");
}
}
else
{
DeleteFile(strFolderPath + fd.cFileName);
}
}
::FindClose(hFind);
}
RemoveDirectory(strFolderPath);
}
本文来自优快云博客,转载请标明出处:http://blog.youkuaiyun.com/primer_programer/archive/2007/12/26/1968255.aspx