2019独角兽企业重金招聘Python工程师标准>>>

SHFileOperation: 可以实现各种文件操作,如文件的拷贝、删除、移动等 .
需要的库文件:
#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 { // shfosHWND         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创建。

转载于:https://my.oschina.net/u/2930533/blog/917194

C++_SHFileOperation文件夹操作相关推荐

  1. C++ :常用文件、文件夹操作汇总

    文件.文件夹操作 1.创建文件夹 2.创建文件 3.删除文件 4.删除文件夹 5.删除一个目录下所有的文件夹 6.清空文件夹 7.读取文件 8.写入文件 9.写入随机文件 10.读取文件属性 11.写 ...

  2. php文件域的作用,PHP作用域和文件夹操作示例

    1.作用域 1.1变量作用域 1.全局变量:在函数外面 2.局部变量:在函数里面,默认情况下,函数内部是不会访问函数外部的变量 3.超全局变量:可以在函数内部和函数外部访问 在函数内部访问全局变量&l ...

  3. Python基础day07 作业解析【文件操作(文件读写、文件夹操作)】

    视频.源码.课件.软件.笔记:超全面Python基础入门教程[十天课程]博客笔记汇总表[黑马程序员] Python基础day07[文件读写.文件夹操作.面向对象(类.对象)] 目录 加强训练 题目1 ...

  4. python的文件操作os_python文件、文件夹操作OS模块

    ''' 一.python中对文件.文件夹操作时经常用到的os模块和shutil模块常用方法. 1.得到当前工作目录,即当前Python脚本工作的目录路径: os.getcwd() 2.返回指定目录下的 ...

  5. LeetCode 1598. 文件夹操作日志搜集器

    文章目录 1. 题目 2. 解题 1. 题目 每当用户执行变更文件夹操作时,LeetCode 文件系统都会保存一条日志记录. 下面给出对变更操作的说明: "../" :移动到当前文 ...

  6. python处理文件夹_python文件及文件夹操作

    1.open()各模式详情 'r'        以只读模式打开,没有write()方法,默认打开方式 'w'       以只写模式打开,文件不存在时会自动创建文件,文件已存在时会清除文件内容并重建 ...

  7. 文件、文件夹操作(I)

    遍历一个目录下的所有文件 首先我们获取用户文档目录路径 1 let manager = FileManager.default 2 let urlForDocument = manager.urls( ...

  8. PHP 文件夹操作「复制、删除、查看大小」递归实现

    PHP虽然提供了 filesize.copy.unlink 等文件操作的函数,但是没有提供 dirsize.copydir.rmdirs 等文件夹操作的函数(rmdir也只能删除空目录).所以只能手动 ...

  9. import java文件,java 文件夹操作,java文件夹,import java.

    java 文件夹操作,java文件夹,import java.import java.io.File; import java.io.FileInputStream; import java.io.F ...

  10. Python中文件操作和文件夹操作的学习笔记

    目录 1 前言 2 工作目录设置 设置工作目录: 获取当前运行文件目录 将工作目录重置为当前运行文件的父目录 遍历文件夹中所有的子文件(包含子文件.孙文件): 3 判断文件(夹)是否存在 4 文件读写 ...

最新文章

  1. 当 position:sticky 遇到 bootstrap 浮动布局时候的踩坑记录
  2. Network simulation using OPNET
  3. 机器学习有很多关于核函数的说法,核函数的定义和作用是什么?
  4. 【数据结构与算法】之深入解析“最小高度树”的求解思路与算法示例
  5. 【云周刊】第139期:阿里年会黑科技全揭秘:IoT手环、人脸识别验票、大屏弹幕互动等“十八般武艺”轮番上阵...
  6. Java多线程学习三十二:Callable 和 Runnable 的不同?
  7. Linux内核深入理解系统调用(3):open 系统调用实现以及资源限制(setrlimit/getrlimit/prlimit)
  8. PhoneGap对比html5写android应用程序【android进化三十八】
  9. GoldenGate碎碎念
  10. linux命令(47):Linux下对文件进行按行排序,去除重复行
  11. Windows华丽变身MAC OS X
  12. AutoJs4.1.0实战教程---终极福利Apk
  13. layui表单验证xmselect必填
  14. android扫雷代码解释,android的扫雷程序.doc
  15. Excel处理数据技巧
  16. Spring.NET学习笔记18——整合NHibernate(基础篇) Level 300
  17. Javascript MS题蓄力:
  18. 一个简单的例子来理解监督学习和非监督学习及其区别
  19. sklearn包使用Extra-Trees和GridSearchCV完成成人死亡率预测
  20. 出国旅游也能用微信买单了

热门文章

  1. DTCC 2020 | 阿里云李飞飞:云原生分布式数据库与数据仓库系统点亮数据上云之路
  2. 27岁没文凭自学编程成为程序员难不难
  3. windows bat批量创建文件夹与文件
  4. 地理加权回归R语言实例
  5. html5毕业设计程序,网页毕业设计制作流程
  6. 自动阅读专业版第七次更新---原薅羊毛专业版
  7. ocx注册成功但是页面不显示
  8. Android AMS 与 APP 进程通信
  9. 淘宝用户行为分析项目——MySQL数据分析+Tableau可视化
  10. 临时邮箱 十分钟邮箱 简介