VC删除文件夹操作代码

vc删除文件夹

//功能: 删除非空目录文件夹
//输入: DirName 文件夹名
//输出: 删除是否成功
//功能: 迭代文件夹内文件,一个一个删除
BOOL DeleteDirectory(char *DirName)
{
 CFileFind tempFind;
 char tempFileFind[200];
 sprintf(tempFileFind,"%s\\*.*",DirName);
 BOOL IsFinded=(BOOL)tempFind.FindFile(tempFileFind);
 while(IsFinded)
 {
  IsFinded=(BOOL)tempFind.FindNextFile();
  if(!tempFind.IsDots())
  {
   char foundFileName[200];
   strcpy(foundFileName,tempFind.GetFileName().GetBuffer(200));
   if(tempFind.IsDirectory())
   {
    char tempDir[200];
    sprintf(tempDir,"%s\\%s",DirName,foundFileName);
    DeleteDirectory(tempDir);
   }
   else
   {
    char tempFileName[200];
    sprintf(tempFileName,"%s\\%s",DirName,foundFileName);
    DeleteFile(tempFileName);
   }
  }
 }
 tempFind.Close();
 if(!RemoveDirectory(DirName))
 {
  MessageBox("删除目录失败!","警告信息",MB_OK);
  return FALSE;
 }
 return TRUE;
}

---------------------------------------------------------记录


void CDeletefileDlg::OnBtnok()   //单一文件选择框
{
 // TODO: Add your control notification handler code here
 CFileDialog file(true);
 CString str;
 if (IDOK==file.DoModal())
 {
 // str=file.GetFileName();
  str=file.GetPathName();
 }
    SetDlgItemText(IDC_FILENAME,str);
}

void CDeletefileDlg::OnBtndelete()   //删除单一文件
{
 // TODO: Add your control notification handler code here
 CString cstr;
 GetDlgItemText(IDC_FILENAME,cstr);           
 CFile::Remove(cstr);
 SetDlgItemText(IDC_FILENAME,"");
 MessageBox(cstr+"已删除成功!");
}


void CDeletefileDlg::OnBtndirtest()     //文件夹选择框
{
 // TODO: Add your control notification handler code here
 BROWSEINFO bi;                                      //定义文件浏览对象
 char buffer[MAX_PATH];                              //定义字符缓冲区
 ZeroMemory(buffer,MAX_PATH);                        //初始化字符缓冲区

 bi.hwndOwner=GetSafeHwnd();
    bi.pidlRoot=NULL;
 bi.pszDisplayName=buffer;
 bi.lpszTitle="请选择一个文件夹";     //设置浏览框标题
 bi.ulFlags=BIF_EDITBOX;
 bi.lpfn=NULL;
 bi.lParam=0;
 bi.iImage=0;
 LPITEMIDLIST pList=NULL;
 if ( (pList=SHBrowseForFolder(&bi)) != NULL )  //弹出浏览框对话框
 {
  char path[MAX_PATH];
  ZeroMemory(path,MAX_PATH);
  SHGetPathFromIDList(pList,path);    //获取用户目录
  GetDlgItem(IDC_DIR)->SetWindowText(path);
 }
 
}

void CDeletefileDlg::OnBtndel()  //目录删除函数
{
 // TODO: Add your control notification handler code here
 GetDlgItemText(IDC_DIR,filestr);
 delDirFile(filestr);               //删除目录下的所有文件
 SetDlgItemText(IDC_DIR,"");
 RemoveDirectory(filestr);              //删除空目录
 MessageBox(filestr+"目录已经完全删除!");
 
}

void CDeletefileDlg::delDirFile(CString spath) //删除目录下的所有文件函数
{
 CFileFind find; 
 BOOL bworking=find.FindFile(spath+"\\*.*");
 
 while (bworking)
 {
  bworking=find.FindNextFile();
  CString filename=find.GetFileName();

  if (find.MatchesMask(FILE_ATTRIBUTE_DIRECTORY))
  {
   if ( (filename!=".") && (filename != "..")  )  //滤过 . 和 .. 文件夹
   {
    delDirFile(spath+"\\"+filename);
   }
  }
  else
  {   
   CFile::Remove(spath+"\\"+filename);  //如果不是文件夹 直接删除
  }
  RemoveDirectory(spath+"\\"+filename);   //
 }

}

void CDeletefileDlg::finddir(CString findpath)  //查找根目录下的所有子文件
{
 CString deldir;
 GetDlgItemText(IDC_DELDIRNAME,deldir);
 CFileFind find;
 CString filename,tempstr,filepath;
 BOOL bworking=find.FindFile(findpath+"\\*.*");

 while(bworking)
 {
  bworking=find.FindNextFile();
  filepath=find.GetFilePath();
  filename=find.GetFileName();

  tempstr=filename.Right(5);
  if ((deldir==tempstr) && find.MatchesMask(FILE_ATTRIBUTE_DIRECTORY))
  {
   delDirFile(filepath);
   RemoveDirectory(filepath);
  }
  else if( (filename!=".") && (filename != "..") && find.MatchesMask(FILE_ATTRIBUTE_DIRECTORY) )  //这里的递归有问题
  {
   finddir(findpath+"\\"+filename);
  }
 }
 find.Close();

}

void CDeletefileDlg::OnDeldebug()  //删除特定的文件夹函数
{
 // TODO: Add your control notification handler code here
 CString path;
 GetDlgItemText(IDC_DIR,path); 
 CString childpath;
    GetDlgItemText(IDC_DELDIRNAME,childpath);
 finddir(path);
 SetDlgItemText(IDC_DIR,"");
    SetDlgItemText(IDC_DELDIRNAME,"");

 MessageBox(path+"下的所有"+childpath+"已经全部删除!");
}

----------------------------------------记录2

//删除文件夹目录(非空)

bool DeleteDirectory(char* sDirName) 
...{ 
    CFileFind tempFind; 
    char sTempFileFind[200] ;
    
    sprintf(sTempFileFind,"%s\*.*",sDirName); 
    BOOL IsFinded = tempFind.FindFile(sTempFileFind); 
    while (IsFinded) 
    ...{ 
        IsFinded = tempFind.FindNextFile(); 
        
        if (!tempFind.IsDots()) 
        ...{ 
            char sFoundFileName[200]; 
            strcpy(sFoundFileName,tempFind.GetFileName().GetBuffer(200)); 
            
            if (tempFind.IsDirectory()) 
            ...{ 
                char sTempDir[200]; 
                sprintf(sTempDir,"%s\%s",sDirName,sFoundFileName); 
                DeleteDirectory(sTempDir); 
            } 
            else 
            ...{ 
                char sTempFileName[200]; 
                sprintf(sTempFileName,"%s\%s",sDirName,sFoundFileName); 
                DeleteFile(sTempFileName); 
            } 
        } 
    } 
    tempFind.Close(); 
    if(!RemoveDirectory(sDirName)) 
    ...{ 
        return FALSE; 
    } 
    return TRUE; 
}

/**//
//下面是应用,CString m_strDir 是一个文件夹路径,如:d:downloadpic

BOOL DelAll()
...{
    if(PathFileExists(m_strDir))     
        DeleteDirectory((LPSTR)(LPCTSTR)m_strDir);
    return 1;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

云雨巫山

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值