windows下文件夹操作SHFILEOPSTRUCT

最近开发ocr系统,发现文件夹操作是一个看似很简单但却很头痛的事情:

还好有SHFILEOPSTRUCT这个结构体,下面是删除和拷贝文件夹的两个函数,

void DeleteFolder(CStringW lpszPath)

{
SHFILEOPSTRUCT FileOp;
ZeroMemory((void*)&FileOp, sizeof(SHFILEOPSTRUCT));


FileOp.fFlags = FOF_NOCONFIRMATION;
FileOp.hNameMappings = NULL;
FileOp.hwnd = NULL;
FileOp.lpszProgressTitle = NULL;
FileOp.pFrom = lpszPath;
FileOp.pTo = NULL;
FileOp.wFunc = FO_DELETE;


SHFileOperation(&FileOp) == 0;

}


void folderMove(CStringW origPath, CStringW goalPath)
{
SHFILEOPSTRUCT fop;
ZeroMemory(&fop, sizeof fop);
fop.wFunc = FO_COPY;
origPath += '\0';
goalPath += '\0';
fop.pFrom = origPath;
fop.pTo = goalPath;
SHFileOperation(&fop);
}

hwnd是Window 句柄,wFunc可以取值如下:

FO_COPY 
FO_DELETE 
FO_MOVE 
FO_RENAME 

分别对应着文件复制,删除,移动,重命名。pForm文件的路径,pTo一般取NULL

特别需要注意的是:

以下这种路径的方式,操作是正确的。

CStringW newPath0;
newPath0 = ".\\0\\*.bmp";
newPath0 += '\0';

以下这种路径的方式,却是错误的。

CStringW newPath0;
newPath0 = ".\\0\\*.bmp\0";

还有就是这种操作方式支持通配符,可以删除指定文件夹下的所有文件。

在这里标记下,希望能帮到其他人。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值