工控编程吧

标题: 上位机MFC如何删除目录 [打印本页]

作者: qq263946146    时间: 2019-8-2 15:28
标题: 上位机MFC如何删除目录
目录 的删除可以直接用函数RemoveDirectory实现。传递一个目录名就好。
但如果文件夹内为为文件,则会删除失败。
我们就必须将文件夹内文件删除,保证文件夹为空才能正常删除。
我们可以用按钮控件调用下面函数
  1. void CDemoDlg::OnDeleteDir()
  2. {
  3.         CString strDirectory = _T("C:\\Demo");
  4.         if (DeleteTree(strDirectory))
  5.         {
  6.                 AfxMessageBox(_T("删除目录成功。"));
  7.         }
  8.         else
  9.         {
  10.                 AfxMessageBox(_T("删除目录失败。"));
  11.         }
  12. }
复制代码
DeleteTree为我们自己编写 的代码,实现带文件的文件夹删除功能。

  1. BOOL CDemoDlg::DeleteTree(CString strDirectory)
  2. {
  3.         CString strWildcard = strDirectory;
  4.         strWildcard += _T("\\*.*");

  5.         CFileFind finder;
  6.         BOOL bFind = FALSE;

  7.         //查找文件
  8.         bFind = finder.FindFile(strWildcard);
  9.         while (bFind)
  10.         {
  11.                 //查找下一个文件
  12.                 bFind = finder.FindNextFile();

  13.                 if (finder.IsDots())
  14.                 {
  15.                         continue;
  16.                 }

  17.                 //找到文件的路径
  18.                 CString strPathName = finder.GetFilePath();

  19.                 //获得找到文件的名称
  20.                 if (finder.IsDirectory())
  21.                 {
  22.                         //递归删除目录
  23.                         if (!DeleteTree(strPathName))
  24.                         {
  25.                                 return FALSE;
  26.                         }
  27.                 }
  28.                 else
  29.                 {
  30.                         if (!::DeleteFile(strPathName))
  31.                         {
  32.                                 return FALSE;
  33.                         }               
  34.                 }
  35.         }

  36.         //结束查找
  37.         finder.Close();

  38.         //删除空目录
  39.         if (!::RemoveDirectory(strDirectory))
  40.         {
  41.                 return FALSE;
  42.         }

  43.         return TRUE;
  44. }
复制代码
这进而准备了个例程,可以下载参考学习:
(, 下载次数: 0)