SHFileOperation删除和拷贝文件(夹)

BOOL  DeleteFolder ( LPCTSTR lpszPath )  
{  
  SHFILEOPSTRUCT FileOp ;  
  ZeroMemory((void*)&FileOp,sizeof(SHFILEOPSTRUCT));

  FileOp . fFlags  =  FOF_NOCONFIRMATION ;  
  FileOp . hNameMappings  =   NULL ;  
  FileOp . hwnd  =   NULL ;  
  FileOp . lpszProgressTitle  =   NULL ;  
  FileOp . pFrom  =  lpszPath ;  
  FileOp . pTo  =   NULL ;  
  FileOp . wFunc  =  FO_DELETE ;  

   return  SHFileOperation ( & FileOp )   = =  0 ;

}

 这是网上找的一段代码,但是在删除目录时总是说无法读取源文件或磁盘。但是目录确实存在。

  查了查MSDN,网上看到别人也有同样的问题,看看他们的解答。原来SHFileOperation中的pFrom可以表示多个路径,各个路径之间以'\0'分隔,最后以'\0\0'(即连续的两个'\0')结束,

于是改了过来。可是还是不行。

  去掉路径最后的一个'\'("c:\\data\\"改为"c:\\data"),成功。

 下面这个函数需要注意同样的问题。


BOOL CopyFolder(LPCTSTR lpszFromPath,LPCTSTR lpszToPath)
{
    SHFILEOPSTRUCT FileOp; 
    ZeroMemory((void*)&FileOp,sizeof(SHFILEOPSTRUCT));
    
    FileOp.fFlags = FOF_NOCONFIRMATION ; 
    FileOp.hNameMappings = NULL; 
    FileOp.hwnd = NULL; 
    FileOp.lpszProgressTitle = NULL; 
    FileOp.pFrom = lpszFromPath; 
    FileOp.pTo = lpszToPath; 
    FileOp.wFunc = FO_COPY; 
    
    return SHFileOperation(&FileOp) == 0;
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值