本文实例讲述了C++递归删除一个目录的实现方法。分享给大家供大家参考。具体方法如下:
CFindFile的使用框架如下:
void Recurse(LPCTSTR pstr) { CFileFind finder; // build a string with wildcards CString strWildcard(pstr); strWildcard += _T("\\*.*"); // start working for files BOOL bWorking = finder.FindFile(strWildcard); while (bWorking) { bWorking = finder.FindNextFile(); // skip . and .. files; otherwise, we'd // recur infinitely! if (finder.IsDots()) continue; // if it's a directory, recursively search it if (finder.IsDirectory()) { CString str = finder.GetFilePath(); TRACE(_T("%s\n"), (LPCTSTR)str); Recurse(str); } } finder.Close(); }
递归删除代码如下:
//循环删除一个目录 void RecursiveDelete(CString strDir) { CFileFind ff; CString strPath; strPath = strDir; if (strPath.Right(1) != '\\') { strPath += '\\'; } strPath += "*.*"; BOOL bWorking = ff.FindFile(strPath); while (bWorking) { bWorking = ff.FindNextFile(); // skip . and .. files; otherwise, we'd // recur infinitely! if (ff.IsDots()) continue; // if it's a directory, recursively search it if (ff.IsDirectory()) { //递归目录 CString str = ff.GetFilePath(); TRACE(_T("%s\n"), (LPCTSTR)str); RecursiveDelete(str); //删除目录 ::SetFileAttributesA(str, FILE_ATTRIBUTE_NORMAL); ::RemoveDirectory(str); } else { //删除文件 CString str = ff.GetFilePath(); TRACE(_T("%s\n"), (LPCTSTR)str); ::SetFileAttributes(str, FILE_ATTRIBUTE_NORMAL); ::DeleteFile(str); } } ff.Close(); } int main(int argc, char *argv[]) { RecursiveDelete("C:\\20_128\\"); return 0; }
希望本文所述对大家的C++程序设计有所帮助。