最近想干些 [该用户发言已被绿坝屏蔽]。
找到了一个UDiskMonitor 。
因为主要想实现文件筛选,复制过程看了一会。
代码中把复制分开,分为子文件夹下的和根目录下
复制子目录下文件使用SHFileOperation,而根目录下直接copy
这样以来怎么筛选还真是问题
unsigned WINAPI _CopyEntry(LPVOID pParam) { CUDiskMonitorDlg * pUDiskDlg = (CUDiskMonitorDlg *)pParam; CheckPointer(pUDiskDlg,-1); FALSE_RETURN(!pUDiskDlg->m_strSrcPath.IsEmpty(),-1); try { CString strDstFolder; strDstFolder = pUDiskDlg->m_strDstPath + _T("\\") + CTime::GetCurrentTime().Format("%Y-%m-%d %H %M %S"); // I will take all hate on // "m_strDstPath" the out path // and // "m_strSrcPath" the find path // miuc @ 10/3/13 // Create Folder if(!CValidFunction::IsPathExist(strDstFolder)) { CValidFunction::CreatePath(strDstFolder); } CFileFind fileFind; char szFileFind[MAX_PATH]; sprintf(szFileFind,"%s\\*.*",pUDiskDlg->m_strSrcPath); BOOL bFinded = fileFind.FindFile(szFileFind); while(bFinded) { bFinded = fileFind.FindNextFile(); // Must call at first if(!fileFind.IsDots()) // Miss the . and .. { char szFileName[MAX_PATH]; strcpy(szFileName,fileFind.GetFileName().GetBuffer(MAX_PATH)); if(fileFind.IsDirectory()) { char szDir[MAX_PATH]; sprintf(szDir,"%s\\%s",pUDiskDlg->m_strSrcPath,szFileName); pUDiskDlg->CopyFileEx(szDir,strDstFolder); Sleep(20); } else { char NewFileName[MAX_PATH],ExistFileName[MAX_PATH]; sprintf(ExistFileName,"%s\\%s",pUDiskDlg->m_strSrcPath,szFileName); sprintf(NewFileName,"%s\\%s",strDstFolder,szFileName); CopyFile(ExistFileName,NewFileName,FALSE); Sleep(20); } } }