zl程序教程

您现在的位置是:首页 >  后端

当前栏目

C++递归删除一个目录实例

C++实例递归 一个 删除 目录
2023-06-13 09:15:29 时间

本文实例讲述了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++程序设计有所帮助。