CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C++ 语言

怎么样删除非空文件夹?

楼主guyujie()2006-02-14 15:07:37 在 C/C++ / C++ 语言 提问

怎么用findfirstfile和findnextfile来删除非空文件夹呢? 问题点数:20、回复次数:4Top

1 楼XBox360(菜)(鸟)回复于 2006-02-14 15:16:33 得分 20

递归先删除里面所有文件  
  然后删除空文件夹  
  bool   DeleteDirectoryEx(const   AnsiString   &P)  
  {  
          if(P.IsEmpty()   ||   P.Length()<4)  
                  return   false;                 //   参数长度必须大于3,即不能为磁盘根目录或空白  
   
          int   len=P.Length();  
          char   *Path=P.c_str();  
   
          AnsiString   Dir=Path;  
          if(Path[len-1]!='\\')  
                  Dir=Dir+'\\';  
   
          AnsiString   Files=Dir   +   "*.*";  
          WIN32_FIND_DATA   wfd;  
          HANDLE   hFind=FindFirstFile(Files.c_str(),&wfd);  
          bool   Ret=true;  
          AnsiString   Tmp;  
          if   (hFind!=INVALID_HANDLE_VALUE)  
          {  
                  bool   bFind=true;  
                  while   (bFind)  
                  {  
                          if(wfd.cFileName[0]!='.')   //   .   ..  
                          {  
                                  Tmp   =   Dir   +   wfd.cFileName;  
                                  if   (wfd.dwFileAttributes   &   FILE_ATTRIBUTE_DIRECTORY)  
                                  {   //   递归删除所有子目录  
                                          Ret   =   Ret   &&   DeleteDirectoryEx(Tmp.c_str());  
                                  }  
                                  else  
                                  {   //   删除所有文件  
                                          //   属性设置为Normal  
                                          SetFileAttributes(Tmp.c_str(),FILE_ATTRIBUTE_NORMAL);  
                                          Ret   =   Ret   &&   DeleteFile(Tmp.c_str());  
                                  }  
                          }  
                          bFind   =   FindNextFile(hFind,&wfd);  
                  }  
                  FindClose(hFind);  
          }  
          if   (Ret)  
                  return   RemoveDirectory(Path);  
          return   false;  
  }Top

2 楼guyujie()回复于 2006-02-14 15:35:55 得分 0

if(P.IsEmpty()   ||   P.Length()<4)  
                  return   false;                
   
  为什么是   参数长度必须大于3,即不能为磁盘根目录或空白  
   
  不懂??请教?  
  Top

3 楼guyujie()回复于 2006-02-14 15:51:50 得分 0

findfirstfile()找到的到底是要删除的那个文件夹还是文件夹下的文件或文件夹?Top

4 楼guyujie()回复于 2006-02-14 16:47:41 得分 0

if(wfd.cFileName[0]!='.')   //   .   ..  
  这句是什么意思?Top

相关问题

  • 如何删除非空文件夹。
  • 如何删除非空文件夹?
  • 删除文件夹
  • 如何删除掉文件夹名字为空格的文件夹?
  • 可不可以直接删除文件夹?不管文件夹是否为空。
  • 怎么样利用VB程序去删除一个有文件的文件夹
  • 如何删除一个非空文件夹
  • 如何删除非空文件夹。请帮忙。
  • 请教xp不能删除空文件夹解决方法!
  • 如何删除FTP上的非空文件夹,在线等.

关键词

  • 文件夹
  • 删除
  • 非空文件夹

得分解答快速导航

  • 帖主:guyujie
  • XBox360

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo