QQ登录

只需一步,快速开始

上位机MFC删除非空文件夹

[ 复制链接 ]

上位机MFC删除非空文件夹

上位机MFC删除非空文件夹

删除一个文件夹可以用函数RemoveDirectory;
但文件夹不为空时,函数就会失败,
所以最直接的方法就是递归调用此函数删除文件夹内所有文件夹,
及调用函数DeleteFile删除全部文件
当前例程实现了这功能,效果如图;
点击<>选择要删除的文件夹>程序弹出文件夹选择对话框,确认后显示选择要删除的文件夹名称;
点击<执行删除>删除事先选择的文件夹;
实现过程:
先创建对话框工程,如界面添加控件,关联按钮1点击函数,实现文件夹选择功能
  1. #define BIF_NEWDIALOGSTYLE 0x00000040
  2. void CGkbc8Dlg::OnButton1()
  3. {       
  4.         BROWSEINFO      sInfo;  
  5.         ::ZeroMemory(&sInfo, sizeof(BROWSEINFO));  
  6.         sInfo.pidlRoot    = 0;  
  7.         sInfo.lpszTitle   = _T("请选择一个文件夹:");  
  8.         sInfo.ulFlags     = BIF_DONTGOBELOWDOMAIN | BIF_RETURNONLYFSDIRS | BIF_NEWDIALOGSTYLE | BIF_EDITBOX;  
  9.         sInfo.lpfn        = NULL;  
  10.         LPITEMIDLIST lpidlBrowse = ::SHBrowseForFolder(&sInfo);  // 显示文件夹选择对话框   
  11.         if (lpidlBrowse != NULL)  
  12.         {  
  13.                 TCHAR  cFolderPath[MAX_PATH] = {0};  
  14.                 if (::SHGetPathFromIDList(lpidlBrowse,cFolderPath))  // 取得文件夹名     
  15.                         SetDlgItemText(IDC_EDIT1,cFolderPath);
  16.         }  
  17.         if(lpidlBrowse != NULL)  
  18.                 ::CoTaskMemFree(lpidlBrowse);  
  19. }
复制代码
2.添加递归删除文件与文件夹函数,再关联删除按钮的点击函数
  1. BOOL RecursiveDelete(CString szPath)
  2. {
  3.         BOOL bResult = true;
  4.         CFileFind ff;
  5.         CString path = szPath;
  6.        
  7.         if(path.Right(1) != "\")
  8.                 path += "\";
  9.         path += "*.*";
  10.         BOOL res = ff.FindFile(path);
  11.         while(res)
  12.         {
  13.                 res = ff.FindNextFile();

  14.                 if (!ff.IsDots() && !ff.IsDirectory())//是文件时直接删除
  15.                         DeleteFile(ff.GetFilePath());
  16.                 else if (ff.IsDots())
  17.                         continue;
  18.                 else if (ff.IsDirectory())
  19.                 {
  20.                         path = ff.GetFilePath();
  21.                         RecursiveDelete(path);//是目录时继续递归,删除该目录下的文件
  22.                         bResult = RemoveDirectory(path);//目录为空后删除目录
  23.                 }
  24.         }       
  25.         bResult = RemoveDirectory(szPath);//最终删除该目录
  26.         return bResult;
  27. }

  28. void CGkbc8Dlg::OnButton2()
  29. {
  30.         CString sText;
  31.         GetDlgItemText(IDC_EDIT1,sText);
  32.         if(sText.IsEmpty())
  33.                 return;
  34.         if(!RecursiveDelete(sText))
  35.                 MessageBox("删除失败");
  36.         else MessageBox("成功");
  37. }
复制代码


请点击此处下载

请先注册会员后在进行下载

已注册会员,请先登录后下载

文件名称:gkbc8.rar 
文件大小:14.42 KB  售价:10金币
下载权限: 不限 以上或 VIP会员   [购买捐助会员]   [充值积分]   有问题联系我


  

如果您认可,可联系功能定制!

  

如果您着急,充值会员可直接联系发您资料!

  

QQ联系我

微信扫扫联系我

  

回复

使用道具 举报

大神点评(1)

快速回复 返回列表 客服中心 搜索