SHFileOperation 操作文件,本例拷贝文件
char*版本
SHFILEOPSTRUCTA fop = { 0 };fop.fFlags = FOF_SILENT | FOF_NOCONFIRMATION | FOF_NOERRORUI | FOF_NOCONFIRMMKDIR;fop.wFunc = FO_COPY;//选择执行类型,FO_COPY,FO_DELETE,FO_RENAME,FO_MOVE四种fop.pFrom = "d:\\test.txt";fop.pTo = "c:\\test\\aaa.txt";int ret = SHFileOperationA(&fop);if (ret){cout << "拷贝错误 " << ret << endl;}else{cout << "拷贝成功 " << ret << endl;}
wchar_t*版本
SHFILEOPSTRUCT fop = { 0 }; //SHFILEOPSTRUCTAfop.fFlags = FOF_SILENT | FOF_NOCONFIRMATION | FOF_NOERRORUI | FOF_NOCONFIRMMKDIR;fop.wFunc = FO_COPY;//选择执行类型,FO_COPY,FO_DELETE,FO_RENAME,FO_MOVE四种fop.pFrom = srcFolder;fop.pTo = dstFolder;SHFileOperation(&fop);
fop.pFrom fop.pTo 这两个值可以这样 :
fop.pFrom = D:\\*.txt fop.pTo= D:\\test 意思代表从D盘根目录找所有txt文件复制到D盘test文件夹中 。
如果pFrom 是一个文件的路径,pTo是另外一个路径,那么会重命名文件,例子1
fFlags成员标志间的关系
标志 |
抑制的对话框 |
相关性与优先级 |
FOF_MULTIDESTFILES |
无 |
无 |
FOF_FILESONLY |
无 |
无 |
FOF_SILENT |
如果设置,进度对话框不显示。 |
优先于FOF_SIMPLEPROGRESS标志。 |
FOF_SIMPLEPROGRESS |
无 |
为FOF_SILENT标志所抑制。 |
FOF_RENAMEONCOLLISION |
如果设置了这个标志,当被移动或拷贝的文件与已存在文件同名时置换对话框不会出现。 |
名字冲突时,如果FOF_NOCONFIRMATION标志设置,则操作继续。 如果二者都设置了,则它优先于FOF_NOCONFIRMATION。即,文件以给定的新名字复制,而不是覆盖。 |
FOF_NOCONFIRMATION |
如果设置,确认对话框在任何情况下都不出现。 |
名字冲突时,引起文件覆盖,除非设置了FOF_RENAMEONCOLLISION标志。 |
FOF_NOCONFIRMMKDIR |
抑制请求建立新文件夹的对话框 |
缺省目录作为严重错误产生一个错误消息框。 建立目录的确认对话框作为错误消息框是否显示依赖于FOF_NOERRORUI的设置。 |
FOF_NOERRORUI |
抑制所有错误消息框。 |
优先于前一个标志。如果设置,则,缺省目录引起不被处理的异常,并且返回错误码。 |
删除文件
文件删除是一个简单的操作,它仅仅影响到输入缓冲pFrom,而pTo缓冲被忽略。与文件复制一样,操作的详细情况依赖于标志的设置。相关的标志是:
标志 |
值 |
描述 |
FOF_SILENT |
0x0004 |
这个操作不回馈给用户,就是说,不显示进度对话框。相关的消息框仍然显示。 |
FOF_NOCONFIRMATION |
0x0010 |
这个标志使函数对任何遇到的消息框都自动回答Yes。 |
FOF_ALLOWUNDO |
0x0040 |
如果设置,这个标志强迫函数移动被删除的文件到‘回收站’中。否则,文件将被物理地从磁盘上删除。 |
FOF_FILESONLY |
0x0080 |
设置这个标志导致函数仅仅删除文件,跳过目录项。它仅仅应用于指定通配符的情况。 |
FOF_SIMPLEPROGRESS |
0x0100 |
这导致简化用户界面。使之只有动画而不报告被删除的文件名。代之的是显示lpszProgressTitle成员中指定的文字。(Win7实际中貌似不可用) |
FOF_NOERRORUI |
0x0400 |
如果设置了这个标志,任何发生的错误都不能使消息框显示,而是程序中返回错误码。 |
这里出现的标志最要紧的是FOF_ALLOWUNDO,它决定文件是否一次就全部删除,或存储到‘回收站’中等候可能的恢复。如果FOF_ALLOWUNDO被设置,文件则被移动到回收站,并且这个操作可以被Undo(尽管可以手动Undo)。Undo特征仅在删除下可用,在拷贝与移动中没有等价的操作。
SHFileOperation()函数的返回值
MSDN资料中说明,SHFileOperation()在成功时返回0,失败时返回非0值。显然这是真的,但并不是最有用的解释。重复测试这个函数,可以确信它有非常多的终止方式。事实上,我们经常在系统错误的提示中运行,在有些地方这个函数只是简单地返回从更靠近文件系统的其它程序中获得的返回码。下面列表给出了SHFileOperation()返回的最通常的部分错误。
错误码 |
描述 |
2 |
如果你试图重命名多重文件,这个消息就会出现。描述是相当直接的:系统不能找到指定的文件。 |
7 |
在询问是否想要置换给定文件时,你回答了‘取消’,函数就返回这个错误码。它的描述也是相当的不明确—存储控制块被销毁。 |
115 |
在试图重命名文件到不同的文件夹时,发生这个文件系统错。重命名文件只是改变文件名,而不能改变文件夹。 |
117 |
一个IOCTL错(输入/输出控制),在目的路径中有错误时或取消了新目录的建立时,这个错误发生了。 |
123 |
你正在试图重命名一个文件,然而你给出的名字是一个已经存在的文件。它也有一个无用的描述:文件名,目录名,或卷标号的语法是不正确的。 |
1026 |
在试图移动或拷贝一个不存在的文件时,出现这个文件系统错。一般地,它提示了,源缓冲中的某些东西应该修改一下。这个错误码弹出一个的错误框,你可以通过设置FOF_NOERRORUI标志抑制它的显示。 |
SHFileOperation 操作文件,本例拷贝文件相关推荐
- python编写代码实现文件的拷贝功能_python从一个文件夹自动拷贝文件到目标文件夹的代码...
这里为大家提供一个python操作文件的例子,实现功能:从一个文件夹自动拷贝文件到目标文件夹. 供python爱好者学习参考. 代码如下: # Filename: CopyPictures.py im ...
- 从远程服务器拷贝文件命令,远程拷贝文件命令Scp的使用
scp通过网络在两台主机之间拷贝文件,数据在传输过程中是经过加密的,其底层使用ssh来进行数据传输,并且它和ssh有相同的验证机制和同样的安全级别.当使用scp拷贝一个文件到另一台主机上的时候,如果目 ...
- python copy文件_python批量拷贝文件
普通批量拷贝文件 import os import shutil import logging from logging import handlers from colorama import Fo ...
- ansys本地的help文件_linux - 远程拷贝文件之rsync
简介 rsync命令是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件.rsync使用所谓的"rsync算法"来使本地和远程两个主机之间的文件达到同步,这个算法只 ...
- linux scp ssh拷贝文件,linux-远程拷贝文件之scp
简介 scp就是secure copy,是用来进行远程文件拷贝的.数据传输使用ssh1,并且和ssh1使用相同的认证方式,提供相同的安全保证. scp只要通过sshd服务进行通讯,而且要求两端都有sc ...
- scp命令服务器下载文件到本地,scp命令linux拷贝文件到本地,服务器下载文件,scp命令拷贝文件,scp命令文件下载上传到服务器
scp命令文件下载上传到服务器 # 服务器拷贝文件到本地 # # scp 服务器路径文件 本地路径文件 scp root@192.168.0.111:/tmp/test.sql D:/share/te ...
- 请使用C#的文件流来拷贝文件
用File.Copy拷贝了一个Excel文件,打开后发现丢掉了许多sheets. 之后发现用文件流来拷贝还是比较靠谱的, 代码很简单: private static void TestFileCopy ...
- python复制文件到指定文件夹_python 拷贝文件夹下所有的文件到指定文件夹(不包括目录)...
1.随便简单些写了一下.直接粘结代码,只是简单的实现一下,还很多需要完善和扩展的地方,比如忽略掉后缀文件,删除文件 如果排除的某些的话可以用: sourceF.find('.后缀')>0 2.注 ...
- vm虚拟机win10无法复制文件_win10虚拟机拷贝文件
{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...
- Linux常用命令(本篇包括,Linux目录结构介绍、Linux Shell介绍、9个常见命令介绍、文件的概念、文件的操作(20个)、目录的操作、文件和目录的权限、文件压缩及解压缩)
Linux常用命令(本篇包括,Linux目录结构介绍.Linux Shell介绍.9个常见命令介绍.文件的概念.文件的操作(20个).目录的操作.文件和目录的权限.文件压缩及解压缩) ...
最新文章
- xxx is not in the sudoers file.This incident will be reported.的解决方法
- idea怎么调成黑色页面
- java 常量pi_JAVA的常量
- DC学院学习笔记(十四):总体、采样及Error Bar
- 利用tensorflow建立简单的神经网络所需要的几条简单语句
- [react] 在React中声明组件时组件名的第一个字母必须是大写吗?为什么?
- Gym - 100989J -(DFS)
- cpu开核_新锐龙让AMD重返巅峰,但逆袭的50年里这些CPU也不应忘记
- Many to many example - 1 of 4
- 本地Windows安装Navicat
- wordpress登录美化css,wordpress后台login界面美化
- 【CNN回归预测】基于matlab鲸鱼算法优化CNN回归预测【含Matlab源码 1453期】
- 1567. 乘积为正数的最长子数组长度 ●●
- 资源分配问题(动态规划)
- 病毒Ytnauexu
- lnoi2019游记
- Tessellation on Any Budget
- 外置罗氏线圈和开合式互感器的导轨式多功能电力仪表
- 关于焦点小组(Focus Group)访谈法
- 达人评测 锐龙r7 5800x3D相当于i几 r75800x3d参数