一. 删除一个目录(删除该目录下所有的文件和子目录) 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; } |