我觉得这是一个非常不错的递归例子

头文件

#pragma once

#include <atlstr.h>

#include <io.h>

#include <string>

#include <iostream>

#include <windows.h>

using namespace std;

BOOL Deleteall(CString path)

{

 long handle = -1;   //用于查找的句柄

 CString strFilePath = "";

 CString strLog = "";

 strFilePath = strPath + "*.*";

struct _finddata_t fileinfo;   //文件信息的结构体

handle=_findfirst(strFilePath,&fileinfo);

 if (handle != -1)

 {

  do

  {

   int isSubDir = fileinfo.attrib & _A_SUBDIR;

   if(isSubDir)                                   //如果是文件夹

   {

    //CString FileName = fileinfo.name;

    string strFileName(fileinfo.name );

    if(strFileName.compare(".") != 0 && strFileName.compare("..") != 0)

    {

     CString NewPath = strPath + strFileName.c_str() + "\\" ;

     DeleteAllFile(NewPath);         //递归

    }

   }

   else

   {

    CString str1(strPath);

    string str2(fileinfo.name );

    CString strfilepath = str1 + str2.c_str();

    if(!DeleteFile(strfilepath))

    {

     strLog.Format("delete %s is failed,errorCode :%d\n", str2, GetLastError());

     cout<<strLog;

    }

   }

  }while(_findnext(handle, &fileinfo) != -1); // 遍历此目录下所有文件找配置文件??

  _findclose(handle);

if(!RemoveDirectory(strPath))

  {

   strLog.Format("delete %s is failed errorCode :%d\n", strPath, GetLastError());

   cout<<strLog;

   return FALSE;

  }

  else

  {

   strLog.Format("delete %s is succeed\n", strPath);

   cout<<strLog;

  }

 }

 return 0;

}

main文件

void main()

{

CString path = "D:\\work\\" ;

if(DeleteFiles(path))

   cout<<"delete succeed"<<endl;

else

   cout<<"delete fail"<<endl;

}

vc 递归删除非空文件夹的更多相关文章

  1. NodeJs递归删除非空文件夹

    此篇博文由于第一次使用fs.unlink()删除文件夹时报“Error: EPERM: operation not permitted, unlink”错误而写,这是因为fs.unlink()只能删除 ...

  2. 如何使用python移除/删除非空文件夹?

    移除/删除非空文件夹/目录的最有效方法是什么? 1.标准库参考:shutil.rmtree. 根据设计,rmtree在包含只读文件的文件夹树上失败.如果要删除文件夹,不管它是否包含只读文件,请使用 i ...

  3. 【转】 python 删除非空文件夹

    转自:https://blog.csdn.net/xiaodongxiexie/article/details/77155864 一般删除文件时使用os库,然后利用os.remove(path)即可完 ...

  4. windows C++删除非空文件夹

    //add by zhuxy 递归删除文件夹 BOOL myDeleteDirectory(CString directory_path) //删除一个文件夹下的所有内容 { BOOL ret=TRU ...

  5. python 删除非空文件夹

    import os import shutil os.remove(path) #删除文件 os.removedirs(path) #删除空文件夹 shutil.rmtree(path) #递归删除文 ...

  6. C 实现删除非空文件夹

    /* 文件名:   rd.c ---------------------------------------------------- c中提供的对文件夹操作的函数,只能对空文件夹进行 删除,这使很多 ...

  7. mac 下删除非空文件夹

    Linux中rmdir命令是用来删除空的目录.使用方式: rmdir [-p] dirName 参数: -p 是当子目录被删除后使它也成为空目录的话,则顺便一并删除. 举例说明:rmdir folde ...

  8. QT删除非空文件夹

    int choose; choose = QMessageBox::warning(NULL,"warning","确定删除该文件?",QMessageBox: ...

  9. shell命令rm删除非空文件夹

    rm -rf dirName CentOS的自带的资源管理器叫nautilus,在命令行里输入nautilus可以启动它.

随机推荐

  1. MS CRM 2011的自定义和开发(11)——插件(plugin)开发(三)

    http://www.cnblogs.com/StoneGarden/archive/2012/02/06/2340661.html MS CRM 2011的自定义和开发(11)——插件(plugin ...

  2. javascript中的事件学习总结

    一.实例: 一段用js实现的固定边栏滚动特效代码(跨浏览器使用): 二.总结: 由于事件处理在不同浏览器之间存在差异(主要是要考虑ie8及以下浏览器的兼容性),所以在使用处理事件的方法之前,先要判断当 ...

  3. jquery form表单序列号

    1.serialize()方法 格式:var data = $("form").serialize(); 功能:将表单内容序列化成一个字符串. 这样在ajax提交表单数据时,就不用 ...

  4. ulipad 常用快捷键

    快捷键名称 对应功能 F1 (M)UliPad Help Document(帮助文档) F2 (M)Directory Browser(目录浏览)(3.1版新增) F3 (M)Find Next(查找 ...

  5. [Perl] Getopt 函数来接收用户参数的使用

    我们在linux常常用到一个程序需要加入参数,现在了解一下perl中的有关控制参数的函数.getopt.在linux有的参数有二种形式.一种是–help,另一种是-h.也就是-和–的分别.–表示完整参 ...

  6. Redis简单使用方法说明

    安装 www.redis.io下载安装包tar zxvf redis.tar.gzcd redismakecd src && make install移动文件,便于管理:mkdir - ...

  7. 解密:wp-includes/load.php

    描述:定义加载 WP 所需要的函数.1)wp_unregister_GLOBALS(),关闭’GLOBALS’, ‘_GET’, ‘_POST’, ‘_COOKIE’, ‘_REQUEST’, ‘_S ...

  8. Navicat(连接)-1

    连接 要在 Navicat 开始使用你的服务器,你要首先用连接窗口创建一个或多个连接.如果你是一个服务器新手和不肯定如何工作,你可能想看看: MySQL 用户手册 Oracle 数据库文件 Postg ...

  9. org.hibernate.id.IdentifierGenerationException: Unknown integral data type for ids : java.lang.String

    org.hibernate.id.IdentifierGenerationException: Unknown integral data type for ids : java.lang.Strin ...

  10. Expert C# 5.0中的Linq部分

    1.先看看.NET中的Linq 2.扩展方法 3.Lambda表达式和表达式树 4.Linq中的延迟操作 5.Linq中的查询方法 5.1分割操作 5.2连接操作 5.3排序操作 5.4分组和连接 5 ...