服务器之家

服务器之家 > 正文

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

时间:2021-02-07 17:39     来源/作者:C++教程网

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

标签:

相关文章

热门资讯

2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全
2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全 2019-12-26
Intellij idea2020永久破解,亲测可用!!!
Intellij idea2020永久破解,亲测可用!!! 2020-07-29
yue是什么意思 网络流行语yue了是什么梗
yue是什么意思 网络流行语yue了是什么梗 2020-10-11
背刺什么意思 网络词语背刺是什么梗
背刺什么意思 网络词语背刺是什么梗 2020-05-22
苹果12mini价格表官网报价 iPhone12mini全版本价格汇总
苹果12mini价格表官网报价 iPhone12mini全版本价格汇总 2020-11-13
返回顶部