当前位置: 首页 > 编程笔记 >

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

凤自珍
2023-03-14
本文向大家介绍C++递归删除一个目录实例,包括了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++程序设计有所帮助。

 类似资料:
  • 问题内容: 有没有办法用Java递归删除整个目录? 在正常情况下,可以删除一个空目录。但是,要删除带有目录的整个目录,就不再那么简单了。 如何用Java删除包含目录的整个目录? 问题答案: 你应该查看。它有一个类,可以执行你想要的操作。

  • 本文向大家介绍php实现用于删除整个目录的递归函数,包括了php实现用于删除整个目录的递归函数的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了php实现用于删除整个目录的递归函数。分享给大家供大家参考。具体实现方法如下: 希望本文所述对大家的php程序设计有所帮助。

  • 问题内容: 我目前正在尝试递归删除目录…奇怪的是,我能够找到的最短代码是以下结构,采用了一个 临时内部类 并且采用了 访问者模式 … 资料来源:这里 鉴于新的API消除了太多的混乱和样板,这让人感到非常笨拙和冗长。 有没有更短的方法可以实现强制递归目录删除? 我正在寻找纯本地Java 1.8方法,所以请不要链接到外部库… 问题答案: 您可以结合使用NIO 2和Stream API。 -返回以下所有

  • 本文向大家介绍Java非递归实现删除任意目录的方法,包括了Java非递归实现删除任意目录的方法的使用技巧和注意事项,需要的朋友参考一下 最近在学C#的文件系统, 发现C#的文件系统貌似比java的东西少一点, 居然连删除目录都直接做好封装了, 想到学java的时候还要自己写递归删除, 好像没写过非递归的,就在网上查了下, 关于非递归删除目录代码没几个, 我就写了一个,递归网上一大堆, 就不粘上来了

  • 本文向大家介绍Lua中实现递归删除一个文件夹,包括了Lua中实现递归删除一个文件夹的使用技巧和注意事项,需要的朋友参考一下 在使用 quick-cocos2d-x 做项目热更新的时候,我需要建立临时文件夹以保存下载的更新包。在更新完成后,我需要删除这些临时文件和文件夹。 cocos2d-x 和 quick-cocos2d-x 都没有提供删除文件夹功能。我做了如下2个尝试: 1. 使用C++ 在 c

  • 本文向大家介绍php递归删除目录与文件的方法,包括了php递归删除目录与文件的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了php递归删除目录与文件的方法。分享给大家供大家参考。具体实现方法如下: 希望本文所述对大家的PHP程序设计有所帮助。