最近想干些 [该用户发言已被绿坝屏蔽]。
找到了一个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);
}
}
}