C++_SHFileOperation文件夹操作
2017-06-08 00:00
232 查看
SHFileOperation: 可以实现各种文件操作,如文件的拷贝、删除、移动等 .
需要的库文件:
#include <Shlwapi.h>
#pragma comment (lib,"Shlwapi.lib")
SHFileOperation函数的定义形式为:
参数: lpFileOp : 一个指向SHFILEOPSTRUCT结构的指针
返回值:0:成功;2:系统不能找到指定的文件;7: 取消是否想要置换给定文件的询问,存储控制块被销毁。115:试图重命名文件到不同的文件夹。重命名文件只是改变文件名,而不能改变文件夹。117:目的路径中有错误或取消了新目录的建立时,123:试图重命名一个已经存在的文件。1026:移动或拷贝一个不存在的文件(设置FOF_NOERRORUI可解决)
SHFILEOPSTRUCT:
SHFILEOPSTRUCT结构体的定义如下:
第二个参数:wFunc: FO_MOVE :移动, FO_COPY :复制, FO_DELETE :删除(源文件), FO_RENAME :重命名(源文件)。第五个参数:fFlags: FOF_MULTIDESTFILES : 目标文件是多个文件 , FOF_CONFIRMMOUSE :。。。。 FOF_SILENT :不创建进度条, FOF_RENAMEONCOLLISION : 当目标文件已存在时,将源文件改名再复制或移动 , FOF_NOCONFIRMATION : 操作过程中不显示确认信息,相当于用户选择了“yes to all” , FOF_WANTMAPPINGHANDLE : 填充 hNameMappings 成员 (第七个参数), FOF_ALLOWUNDO : 允许撤销操作 , FOF_FILESONLY : 只操作文件 , FOF_SIMPLEPROGRESS : 显示进度条对话框但不显示文件名 , FOF_NOCONFIRMMKDIR : 新建目录时不提示确认 , FOF_NOERRORUI : 如果操作出错,不显示用户接口
具体用法如例:
拷贝:
删除:
删除的话会把整个文件夹删除掉,如果只想删除文件夹下的内容,保留文件夹的话,可先删除后在CreateDirectory创建。
需要的库文件:
#include <Shlwapi.h>
#pragma comment (lib,"Shlwapi.lib")
SHFileOperation函数的定义形式为:
int SHFileOperation( _Inout_ LPSHFILEOPSTRUCT lpFileOp);
参数: lpFileOp : 一个指向SHFILEOPSTRUCT结构的指针
返回值:0:成功;2:系统不能找到指定的文件;7: 取消是否想要置换给定文件的询问,存储控制块被销毁。115:试图重命名文件到不同的文件夹。重命名文件只是改变文件名,而不能改变文件夹。117:目的路径中有错误或取消了新目录的建立时,123:试图重命名一个已经存在的文件。1026:移动或拷贝一个不存在的文件(设置FOF_NOERRORUI可解决)
SHFILEOPSTRUCT:
SHFILEOPSTRUCT结构体的定义如下:
typedef struct _SHFILEOPSTRUCT { // shfos HWND hwnd; //显示状态信息窗口的句柄,一般设为主窗体的句柄 UINT wFunc; //要执行的操作 LPCSTR pFrom; //源文件或目录 LPCSTR pTo; //目标文件或目录 FILEOP_FLAGS fFlags; //控制文件操作的标志 BOOL fAnyOperationsAborted; //操作是否放弃 LPVOID hNameMappings; //文件名映射对象的句柄,很少用 LPCSTR lpszProgressTitle; //进度条标题,仅在fFlags标志中指定了//FOF_SIMPLEPROGRESS时有效 } SHFILEOPSTRUCT, FAR *LPSHFILEOPSTRUCT;
第二个参数:wFunc: FO_MOVE :移动, FO_COPY :复制, FO_DELETE :删除(源文件), FO_RENAME :重命名(源文件)。第五个参数:fFlags: FOF_MULTIDESTFILES : 目标文件是多个文件 , FOF_CONFIRMMOUSE :。。。。 FOF_SILENT :不创建进度条, FOF_RENAMEONCOLLISION : 当目标文件已存在时,将源文件改名再复制或移动 , FOF_NOCONFIRMATION : 操作过程中不显示确认信息,相当于用户选择了“yes to all” , FOF_WANTMAPPINGHANDLE : 填充 hNameMappings 成员 (第七个参数), FOF_ALLOWUNDO : 允许撤销操作 , FOF_FILESONLY : 只操作文件 , FOF_SIMPLEPROGRESS : 显示进度条对话框但不显示文件名 , FOF_NOCONFIRMMKDIR : 新建目录时不提示确认 , FOF_NOERRORUI : 如果操作出错,不显示用户接口
具体用法如例:
拷贝:
strSrcPath.TrimRight('\\');//源文件路径 strDestPath.TrimRight('\\');//目标文件路径 strSrcPath += _T('\0'); strDestPath+= _T('\0'); SHFILEOPSTRUCT si = {0}; si.hwnd = ::GetDesktopWindow(); si.wFunc = FO_COPY; si.pFrom = strSrcPath; si.pTo = strDestPath; si.fFlags = FOF_NOCONFIRMATION | FOF_NOCONFIRMMKDIR|FOF_SILENT; if(0 != SHFileOperation(&si)) //失败
删除:
strDelPath.TrimRight('\\'); strDelPath += _T('\0'); SHFILEOPSTRUCT FileOp={0}; FileOp.pFrom = strDelPath; FileOp.pTo = NULL; //一定要是NULL FileOp.fFlags= FOF_ALLOWUNDO|FOF_NOCONFIRMATION; FileOp.wFunc = FO_DELETE; //删除操作 int bRet = SHFileOperation(&FileOp); if (0 != bRet) return ; //失败
删除的话会把整个文件夹删除掉,如果只想删除文件夹下的内容,保留文件夹的话,可先删除后在CreateDirectory创建。
相关文章推荐
- vc 对文件夹的操作 SHFileOperation()的使用
- 对文件夹的操作 SHFileOperation()的使用
- [C++]文件/文件夹的创建和删除操作
- C++文件与文件夹操作(1)--判断文件和文件夹是否存在
- 【C/C++】文件夹的打开、遍历、删除、创建、关闭操作汇总
- C/C++中关于遍历文件夹的操作
- c++对文件进行操作之读取文件夹下面的图片名称
- C++ 遍历指定文件夹~相应操作
- C++ 对文件夹的操作
- C++文件与文件夹操作(3)--文件与文件夹复制
- C++中读入一个文件夹下多个文件的数据操作(文件夹遍历)
- C++ 文件夹的一些操作
- C++ MFC 操作文件夹及属性(新建,删除[包含子文件[夹]],剪切,复制,重命名)
- C/C++创建和删除文件夹操作
- C/C++创建和删除文件夹操作
- C++文件夹操作
- C / C++ 文件文件夹操作详细整理
- C++ 文件及文件夹操作(二)
- C/C++创建和删除文件夹操作
- C/C++创建和删除文件夹操作(对单个文件夹进行操作)