[C/C++源码]删除目录/重建目录/清理垃圾

分享一段简单的源码,使用了WinCE Shell API,可以删除目录和重建目录,可用来删除目录内文件或清理垃圾文件.
这个是"管它"的"清理垃圾"和"清理日志"任务的源码,M8上测试通过.
用于M8,WinCE/WM需要把CMzString相关地方稍作修改.


/************************************
*
* Author:LOJA
* Date: 2009/08/25
*
*
*************************************/

#include<Shellapi.h>    //WinCE

//重建目录函数(删除整个目录及其子目录子文件,然后重新创建该目录)
BOOL RebuildDirectory(const CMzString str,bool BRebulid=true)
{
    SHFILEOPSTRUCT lpFileOp;
    lpFileOp.hwnd=NULL;
    lpFileOp.wFunc=FO_Delete;
    lpFileOp.fFlags=FOF_NOCONFIRMATION|FOF_NOERRORUI|FOF_SILENT;        //不提示覆盖,不显示错误,不显示进度
    lpFileOp.pFrom=str.C_Str();

    if(SHFileOperation(&lpFileOp)==0)
    {
        if (BRebulid)
        {
            return CreateDirectory(lpFileOp.pFrom,NULL);
        }
        else
        {
            return TRUE;
        }
    }
    return FALSE;
}


//M8清理垃圾
CMzString strFolder;    //使用魅族CMzString类前请包含相关头文件

strFolder=L"Temp";
RebuildDirectory(strFolder);

strFolder=L"Windows\\Profiles";
RebuildDirectory(strFolder);

strFolder=L"Windows\\Recent";
RebuildDirectory(strFolder);

strFolder=L"Windows\\Temp";
RebuildDirectory(strFolder);

strFolder=L"Windows\\www";
RebuildDirectory(strFolder);

strFolder=L"Disk\\Temp";
RebuildDirectory(strFolder);

strFolder=L"Disk\\Application Data\\WebBrowser\\cache";
RebuildDirectory(strFolder);

strFolder=L"Disk\\Application Data\\WebBrowser\\tmp";
RebuildDirectory(strFolder);



//M8清理日志
CMzString strFolder;
strFolder=L"Disk\\Application Data\\Log";
RebuildDirectory(strFolder);



[本日志由 LOJA 于 2009-08-26 12:35 AM 编辑]
上一篇: [C/C++源码]WinCE屏幕快照
下一篇: [M8][开源]动画锁屏/待机 V1.2
文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags: C C++ 源码 清理垃圾 删除目录 重建目录 M8 WinCE WM
相关日志:
评论: 6 | 引用: 0 | 查看次数: -
风鼠如飞[2010-05-16 04:12 PM | | | 121.249.198.90 | del | 回复回复]
6#
LOJA研究的就是我需要的!
lpFileOp.wFunc=FO_Delete;\\这句宏是大写的FO_Delete,如果换成FO_COPY,可以拷贝整个文件夹。
shark[2009-08-27 11:34 AM | | | 120.87.127.66 | del | 回复回复]
5#
嗯。明白。。
shark[2009-08-26 05:12 PM | | | 58.254.118.111 | del | 回复回复]
4#
我的意思就是您上面的代码不能通过编译。
回复来自 <a href=LOJA"/> LOJA 回复 [2009-08-26 07:42 PM]
RebuildDirectory直接用这个函数吧,当然不能全部复制在一起编译.下面清理部分放到比如按钮事件里,选择性吸收吧.
shark[2009-08-26 01:55 PM | | | 58.254.118.111 | del | 回复回复]
地板
我知道。但是我太菜了。找不到问题的根源。你能搞一下吗?
回复来自 <a href=LOJA"/> LOJA 回复 [2009-08-26 04:27 PM]
loja[at]tom.com
发我邮箱帮你看看
shark[2009-08-26 12:24 AM | | | 58.254.118.111 | del | 回复回复]
板凳
为什么我运行不通过呢。显示fatal error C1014: 包含文件太多 : 深度 = 1024
回复来自 <a href=LOJA"/> LOJA 回复 [2009-08-26 12:36 AM]
应该头文件包含有问题.
jason[2009-08-25 10:03 PM | | | 116.4.203.8 | del | 回复回复]
沙发
直接用C++中提供的String就可以了, 没必要使用魅族封装的CMzString
发表评论
昵 称:
密 码: 游客发言不需要密码.
邮 箱: 邮件地址支持Gravatar头像,邮箱地址不会公开.
网 址: 输入网址便于回访.
内 容:
验证码:
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.
字数限制 800 字 | UBB代码 开启 | [img]标签 开启