复制指定文件(夹)到指定位置

本程序可以复制一个文件(夹)到指定的位置,当然,写法还很多,如使用IMAPIFolder::CopyFolder函数下面这段代码使用了SHFileOperation和CopyFile两个函数,子文件夹用前者,单个文件使用后者.

BOOL CopyFolder(CString fromPath,CString toPath)
{
 
    CFileFind finder;
    BOOL   bWorking = finder.FindFile( LPCTSTR (fromPath+"//*.*") );           
    while(bWorking)  
    {  
        bWorking = finder.FindNextFile();
        if(finder.IsDots())         //dot
           continue;      
        if(finder.IsDirectory()) //folder
        {
            CString folderpath = finder.GetFilePath();
            char tmp[MAX_PATH];
            ZeroMemory(tmp,MAX_PATH);
            strcpy(tmp,folderpath.GetBuffer( folderpath.GetLength() ));
            SHFILEOPSTRUCT sfo;
            sfo.hwnd = NULL;
            sfo.wFunc = FO_COPY;
            sfo.pFrom = tmp;
            sfo.pTo = toPath.GetBuffer( toPath.GetLength() );
            sfo.fFlags = FOF_SILENT | FOF_NOCONFIRMATION | FOF_NOCONFIRMMKDIR ;
            SHFileOperation(&sfo);
            folderpath.ReleaseBuffer();
            toPath.ReleaseBuffer();
            continue;
        }
        else                      //file
        {
           CString filename=finder.GetFileName();
           CopyFile(finder.GetFilePath(),toPath+"//
"+filename,false);

        }
       
    }
    return TRUE;

}
注:用ZeroMemory(tmp,MAX_PATH)对路径进行初始化,因为SHFileOperation中的pFrom可以表示多个路径,各个路径之间以/0分隔,最后以/0/0即连续的两个/0)结束.

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值