C++递归删除一个目录实例
本文实例讲述了C++递归删除一个目录的实现方法。分享给大家供大家参考。具体方法如下:
CFindFile的使用框架如下:
voidRecurse(LPCTSTRpstr)
{
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++程序设计有所帮助。
热门推荐
1 训练狗狗憋尿
2 狗狗追踪训练
3 狗狗训练要多少钱
5 深圳狗狗训练
6 训练狗狗唤回
7 狗狗叫怎么训练
8 狗狗训练班
10 狗狗社会化训练
11 狗狗叫回训练
12 广州狗狗训练学校
13 狗狗训练躺下
14 狗狗随行训练
15 训练狗狗巡回
16 狗狗要怎么训练
17 狗狗喂食训练
18 训练狗狗躺下