Windows中删除和拷贝目录的方法

一. 删除一个目录(删除该目录下所有的文件和子目录)
BOOL CRobotMatchDlg::DeleteDirectory(LPCSTR szDirName)
{
 CFileFind tempFind;
 char tempFileFind[200];
 sprintf(tempFileFind,"%s//*.*",szDirName);
 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",szDirName,foundFileName);
    DeleteDirectory(tempDir);
   }
   else
   {
    char tempFileName[200];
    sprintf(tempFileName,"%s//%s",szDirName,foundFileName);
    DeleteFile(tempFileName);
   }
  }
 }
 tempFind.Close();
 if(!RemoveDirectory(szDirName))
 {
  MessageBox("删除目录失败!","警告信息",MB_OK);
  return FALSE;
 }
 return TRUE;
}

二. 目录的复制
BOOL CRobotMatchDlg::CopyDirectory(LPCSTR lpstrSource, LPCSTR lpstrDest)
{
 char  strTitle[]="File copying";

 // Set the File Operation Attribution
 SHFILEOPSTRUCT FileOp;
 FileOp.hwnd=m_hWnd;
 FileOp.wFunc=FO_COPY;
 
 char szBufSource[MAX_PATH] = "";
 strcpy(szBufSource,lpstrSource);
 szBufSource[strlen(lpstrSource)+1] = 0;
 char szBufDest[MAX_PATH] = "";
 strcpy(szBufDest,lpstrDest);
 szBufDest[strlen(lpstrDest)+1] = 0;
 
 FileOp.pFrom = szBufSource;
 FileOp.pTo   = szBufDest;
 FileOp.fFlags=FOF_ALLOWUNDO;
 // FOF_NOCONFIRMATION
 FileOp.hNameMappings=NULL;
 FileOp.lpszProgressTitle=strTitle;

 int nOk=SHFileOperation(&FileOp);
 
 if (nOk)
  TRACE("There is an error: %d/n",nOk);
 else TRACE("SHFileOperation finished successfully/n");
 
 if(FileOp.fAnyOperationsAborted)
  TRACE("Operation was aborted!/n");
  
 if (nOk)
  return FALSE;
 else return TRUE;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值