C++递归删除一个目录实例_C语言教程-查字典教程网
C++递归删除一个目录实例
C++递归删除一个目录实例
发布时间:2016-12-28 来源:查字典编辑
摘要:本文实例讲述了C++递归删除一个目录的实现方法。分享给大家供大家参考。具体方法如下:CFindFile的使用框架如下:复制代码代码如下:vo...

本文实例讲述了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("%sn"), (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("%sn"), (LPCTSTR)str);

RecursiveDelete(str);

//删除目录

::SetFileAttributesA(str, FILE_ATTRIBUTE_NORMAL);

::RemoveDirectory(str);

}

else

{

//删除文件

CString str = ff.GetFilePath();

TRACE(_T("%sn"), (LPCTSTR)str);

::SetFileAttributes(str, FILE_ATTRIBUTE_NORMAL);

::DeleteFile(str);

}

}

ff.Close();

}

int main(int argc, char *argv[])

{

RecursiveDelete("C:20_128");

return 0;

}

希望本文所述对大家的C++程序设计有所帮助。

相关阅读
推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
  • 大家都在看
  • 小编推荐
  • 猜你喜欢
  • 最新C语言学习
    热门C语言学习
    编程开发子分类