SHFileOperation操作

本文介绍了一个针对SHFileOperation函数的简单封装方法,该方法解决了在不同操作系统环境下进行文件重命名操作的问题,特别是针对Windows XP和Windows CE平台。

SHFileOperation操作比较方便,因为源文件名支持多个文件,以/0间隔,所以末尾要用两个零结束。如果用CString保存源文件名,在XP上操作没问题,在WINCE下,用EVC,重命名文件夹可以,但是重命名文件时,就失败,原因就是没有用两个零结束。所以做了下面的封装。

/*---- 文件操作函数,对SHFileOperation作简单封装 csSrcFile: 源文件名 csDestFile:目的文件名 type:类型操作 ---------------------------*/ BOOL CCommonTool::SHFileOperation( CString csSrcFile, CString csDestFile, unsigned short type ) { // 必须初始化,源文件名支持多个文件,以/0间隔,所以末尾要用两个零结束 TCHAR szSrcPath[MAX_PATH+2]={0}, szDest[MAX_PATH+2]={0}; wcscpy(szSrcPath, csSrcFile.GetBuffer(0)); wcscpy(szDest, csDestFile.GetBuffer(0)); // 如果是文件夹,末尾不能带反斜线 if ( szSrcPath[STRLEN(szSrcPath)-1]=='//' ) { szSrcPath[STRLEN(szSrcPath)-1]=0x0; } if ( szDest[STRLEN(szDest)-1]=='//' ) { szDest[STRLEN(szDest)-1]=0x0; } SHFILEOPSTRUCT op; memset(&op,0, sizeof(SHFILEOPSTRUCT)); op.fFlags=FOF_RENAMEONCOLLISION|FOF_NOERRORUI|FOF_NOCONFIRMATION|FOF_SILENT; op.wFunc= type; op.pFrom = szSrcPath; op.pTo= szDest; op.hwnd = NULL; return (::SHFileOperation(&op)==0); }

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值