shfileoperation和直接操作文件比,哪个效率更高?

吉云

今天心血来潮,想搞搞文件操作,就去翻翻以前的笔记,看到 shfileoperation 这个东西。以前总觉得这玩意儿挺神秘,今天就来好好扒一扒它。

我得说,这东西跟平时用的 CopyFileEx 什么的不太一样。CopyFileEx 只能搞文件,想复制个文件夹? 没门!你得自己去一个个找文件,麻烦死。但 shfileoperation 就厉害,文件、文件夹,一把抓,全都能搞定。

shfileoperation和直接操作文件比,哪个效率更高?

我一开始还挺懵,这东西怎么用?后来发现,也挺简单的。它主要就是靠一个叫 SHFILEOPSTRUCT 的结构体。这结构体里头,最关键的几个东西:

  • wFunc: 告诉它你要干复制、删除、移动,还是别的
  • pFrom: 你要操作的文件的路径。
  • pTo: 你要把文件弄到哪儿去。
  • fFlags: 一些额外的选项,可以控制操作的具体行为。

我先试试复制文件。把 wFunc 设置成 FO_COPY,然后把 pFrompTo 填上文件的路径,就完事。跑起来一看,文件还真复制过去!

然后我又试试复制文件夹,也一样好使。这下我就乐,以后再也不用自己去遍历文件夹,省多少事!

不过这里头有个坑,我得提醒一下。pFrom 这里,如果你要操作多个文件,得用两个零 (\0\0) 来结尾。我一开始不知道,结果折腾半天,后来才发现是这个问题。

我还发现,shfileoperation 这东西,它返回 0 表示成功,返回别的就表示失败。不过光知道成功失败还不够,有时候我还想知道具体是哪儿出错。后来我查查,发现可以通过 GetLastError 来获取更详细的错误信息。

shfileoperation 这东西还是挺强大的,能实现各种文件操作。不过用的时候也得小心点,别掉坑里。这回实践,让我对文件操作又有更深的理解,以后再遇到类似的问题,我就不用慌!

对,使用这个函数前需要包含头文件:


#include <shellapi.h>

然后,如果需要使用到一些相关的API也需要引入库文件:


#pragma comment (lib,"*")

实践总结

这回的实践让我对文件操作有新的认识,虽然遇到一些小坑,但最终还是顺利搞定。以后再也不怕复杂的文件操作!

免责声明:由于无法甄别是否为投稿用户创作以及文章的准确性,本站尊重并保护知识产权,根据《信息网络传播权保护条例》,如我们转载的作品侵犯了您的权利,请您通知我们,请将本侵权页面网址发送邮件到qingge@88.com,深感抱歉,我们会做删除处理。

目录[+]