大家好,又见面了,我是你们的朋友全栈君。
SHFileOperation操作比较方便,因为源文件名支持多个文件,以/0间隔,所以末尾要用两个零结束。如果用CString保存源文件名,在XP上操作没问题,在WINCE下,用EVC,重命名文件夹可以,但是重命名文件时,就失败,原因就是没有用两个零结束。所以做了下面的封装。
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);
}
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/161014.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...