windows下实现拷贝文件/文件夹
使用SHFileOperation函数进行操作
需要注意的地方:
1、pFrom, pTo字符串必须是以两个\0结尾
2、FOF_NOCONFIRMATION | FOF_NOCONFIRMMKDIR | FOF_NOERRORUI | FOF_SILENT标志位用户实现静默拷贝,拷贝过程不弹出任何对话框
1 int CopyFileToFolder(const string &filePath, const string &toPath) 2 { 3 SHFILEOPSTRUCT FileOp; 4 ZeroMemory((void*)&FileOp, sizeof(SHFILEOPSTRUCT)); 5 6 string strFromPath = filePath; 7 string strToPath = toPath; 8 // this string must be double-null terminated 9 strFromPath.append(1, _T('\0')); 10 strToPath.append(1, _T('\0')); 11 12 FileOp.fFlags = FOF_NOCONFIRMATION | FOF_NOCONFIRMMKDIR | FOF_NOERRORUI | FOF_SILENT; 13 FileOp.hNameMappings = NULL; 14 FileOp.hwnd = NULL; 15 FileOp.lpszProgressTitle = NULL; 16 FileOp.pFrom = strFromPath.c_str(); 17 FileOp.pTo = strToPath.c_str(); 18 FileOp.wFunc = FO_COPY; 19 20 return SHFileOperation(&FileOp); 21 }