C++递归删除一个目录实例
本文实例讲述了C++递归删除一个目录的实现方法。分享给大家供大家参考。具体方法如下:
CFindFile的使用框架如下:
voidRecurse(LPCTSTRpstr) { CFileFindfinder; //buildastringwithwildcards CStringstrWildcard(pstr); strWildcard+=_T("\\*.*"); //startworkingforfiles BOOLbWorking=finder.FindFile(strWildcard); while(bWorking) { bWorking=finder.FindNextFile(); //skip.and..files;otherwise,we'd //recurinfinitely! if(finder.IsDots()) continue; //ifit'sadirectory,recursivelysearchit if(finder.IsDirectory()) { CStringstr=finder.GetFilePath(); TRACE(_T("%s\n"),(LPCTSTR)str); Recurse(str); } } finder.Close(); }
递归删除代码如下:
//循环删除一个目录 voidRecursiveDelete(CStringstrDir) { CFileFindff; CStringstrPath; strPath=strDir; if(strPath.Right(1)!='\\') { strPath+='\\'; } strPath+="*.*"; BOOLbWorking=ff.FindFile(strPath); while(bWorking) { bWorking=ff.FindNextFile(); //skip.and..files;otherwise,we'd //recurinfinitely! if(ff.IsDots()) continue; //ifit'sadirectory,recursivelysearchit if(ff.IsDirectory()) { //递归目录 CStringstr=ff.GetFilePath(); TRACE(_T("%s\n"),(LPCTSTR)str); RecursiveDelete(str); //删除目录 ::SetFileAttributesA(str,FILE_ATTRIBUTE_NORMAL); ::RemoveDirectory(str); } else { //删除文件 CStringstr=ff.GetFilePath(); TRACE(_T("%s\n"),(LPCTSTR)str); ::SetFileAttributes(str,FILE_ATTRIBUTE_NORMAL); ::DeleteFile(str); } } ff.Close(); } intmain(intargc,char*argv[]) { RecursiveDelete("C:\\20_128\\"); return0; }
希望本文所述对大家的C++程序设计有所帮助。