//删除文件夹目录(非空)
- bool DeleteDirectory(char* sDirName)
- {
- CFileFind tempFind;
- char sTempFileFind[200] ;
-
- sprintf(sTempFileFind,"%s\*.*",sDirName);
- BOOL IsFinded = tempFind.FindFile(sTempFileFind);
- while (IsFinded)
- {
- IsFinded = tempFind.FindNextFile();
-
- if (!tempFind.IsDots())
- {
- char sFoundFileName[200];
- strcpy(sFoundFileName,tempFind.GetFileName().GetBuffer(200));
-
- if (tempFind.IsDirectory())
- {
- char sTempDir[200];
- sprintf(sTempDir,"%s\%s",sDirName,sFoundFileName);
- DeleteDirectory(sTempDir);
- }
- else
- {
- char sTempFileName[200];
- sprintf(sTempFileName,"%s\%s",sDirName,sFoundFileName);
- DeleteFile(sTempFileName);
- }
- }
- }
- tempFind.Close();
- if(!RemoveDirectory(sDirName))
- {
- return FALSE;
- }
- return TRUE;
- }
///// //下面是应用,CString m_strDir 是一个文件夹路径,如:d:downloadpic
- BOOL DelAll()
- {
- if(PathFileExists(m_strDir))
- DeleteDirectory((LPSTR)(LPCTSTR)m_strDir);
- return 1;
- }
|
如果不进行递归删除。你可以使用API函数SHFileOperation,它可以一次删除目录及其下面的子目录和文件。
示例代码:
- <pre name="code" class="cpp">BOOL DelTree(LPCTSTR lpszPath)
-
- {
-
- SHFILEOPSTRUCT FileOp;
-
- FileOp.fFlags = FOF_NOCONFIRMATION;
-
- FileOp.hNameMappings = NULL;
-
- FileOp.hwnd = NULL;
-
- FileOp.lpszProgressTitle = NULL;
-
- FileOp.pFrom = lpszPath;
-
- FileOp.pTo = NULL;
-
- FileOp.wFunc = FO_DELETE;
-
- returnSHFileOperation(&FileOp) == 0;</pre><br>
- <br>
- <pre></pre>
- <p></p>
- <p>}</p>
- <p> </p>
- <pre></pre>
- <pre></pre>
转自:http://blog.csdn.net/wangjieest/article/details/7000640