大家好,又见面了,我是你们的朋友全栈君。
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);
}
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/161014.html原文链接:https://javaforall.net