C++递归删除一个目录实例
2023-06-13 09:15:29 时间
本文实例讲述了C++递归删除一个目录的实现方法。分享给大家供大家参考。具体方法如下:
CFindFile的使用框架如下:
{
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++程序设计有所帮助。
相关文章
- C/C++编程学习 – 第5周 ④ 石头剪刀布「建议收藏」
- C++ Primer Plus习题及答案-第九章
- C++stl库_c++库
- C++基本概念_c语言 c++区别
- C、C++ 和 Java 中的浮点运算和关联性
- C++结构体和类的区别_c++有结构体吗
- C++ Primer Plus习题及答案-第十四章
- c++的链表-C++链表
- c++中类的数据成员初始化次序
- 【Android FFMPEG 开发】C++ 回调 Java 方法 模板 ( JavaVM *vm | JNIEnv *env | jobject instance | 引用类型 | 模板代码示例 )
- C++11:可变参数模板/lambda表达式
- C++多线程/原子性操作互斥锁
- c++基础篇之C++ 模板
- C++实例解析哈夫曼树详解编程语言
- C++ stack(STL stack)用法详解
- Linux上搭建C/C++IDE开发环境
- C++多继承同名隐藏实例详细介绍
- ProtocolBuffer技术深入理解(C++实例)
- C++字符串的反转五种方法实例
- C++中引用(&)的用法与应用实例分析
- C++设计类不能被继承的方法实例讲解
- C++采用TLS线程局部存储的用法实例
- C++基于hookiat改变Messagebox实例
- C++之WSAAsyncSelect模型实例
- C++的try块与异常处理及调试技术实例解析
- C++线程池的简单实现方法