API文件(夹)操作总结:拷贝、删除等

//删除文件或者文件夹
bool DeleteFile(string strPath)
{
    int nLen = strPath.length();
    char* pPath = new char[nLen+2];
    strcpy(pPath,strPath.c_str());
    pPath[nLen+1]='\0';

    SHFILEOPSTRUCT FileOp={0};
    FileOp.fFlags = //FOF_ALLOWUNDO |   //允许放回回收站
        FOF_NOCONFIRMATION |  //不出现确认对话框
        FOF_NOERRORUI; //不出现错误对话框
    FileOp.pFrom = pPath;
    FileOp.pTo = NULL;      //一定要是NULL
    FileOp.wFunc = FO_DELETE;    //删除操作

    bool bResult = (SHFileOperation(&FileOp) == 0);
    delete []pPath;
    return bResult;
}

//复制文件或文件夹
bool CopyFile(string strFrom,string strTo)
{
    int nFromLen = strFrom.length();
    int nToLen = strTo.length();
    char* pFrom = new char[nFromLen+2];
    char* pTo = new char[nToLen+2];
    strcpy(pFrom,strFrom.c_str());
    strcpy(pTo,strTo.c_str());
    pFrom[nFromLen+1]='\0';
    pTo[nToLen+1]='\0';

    SHFILEOPSTRUCT FileOp={0};
    FileOp.fFlags = FOF_NOCONFIRMATION|   //不出现确认对话框
        FOF_NOCONFIRMMKDIR ; //需要时直接创建一个文件夹,不需用户确定
    FileOp.pFrom = pFrom;
    FileOp.pTo = pTo;
    FileOp.wFunc = FO_COPY;
    bool bResult = (SHFileOperation(&FileOp) == 0);
    delete []pFrom;
    delete []pTo;
    return bResult;
}

//移动文件或文件夹
bool MoveFile(string strFrom,string strTo)
{
    int nFromLen = strFrom.length();
    int nToLen = strTo.length();
    char* pFrom = new char[nFromLen+2];
    char* pTo = new char[nToLen+2];
    strcpy(pFrom,strFrom.c_str());
    strcpy(pTo,strTo.c_str());
    pFrom[nFromLen+1]='\0';
    pTo[nToLen+1]='\0';

    SHFILEOPSTRUCT FileOp={0};
    FileOp.fFlags = FOF_NOCONFIRMATION|   //不出现确认对话框
        FOF_NOCONFIRMMKDIR ; //需要时直接创建一个文件夹,不需用户确定
    FileOp.pFrom = pFrom;
    FileOp.pTo = pTo;
    FileOp.wFunc = FO_MOVE;

    bool bResult = (SHFileOperation(&FileOp) == 0);
    delete []pFrom;
    delete []pTo;
    return bResult;
}

//从命名文件或文件夹
bool ReNameFile(string strFrom,string strTo)
{
    int nFromLen = strFrom.length();
    int nToLen = strTo.length();
    char* pFrom = new char[nFromLen+2];
    char* pTo = new char[nToLen+2];
    strcpy(pFrom,strFrom.c_str());
    strcpy(pTo,strTo.c_str());
    pFrom[nFromLen+1]='\0';
    pTo[nToLen+1]='\0';

    SHFILEOPSTRUCT FileOp={0};
    FileOp.fFlags = FOF_NOCONFIRMATION;   //不出现确认对话框
    FileOp.pFrom = pFrom;
    FileOp.pTo = pTo;
    FileOp.wFunc = FO_RENAME;

    bool bResult = (SHFileOperation(&FileOp) == 0);
    delete []pFrom;
    delete []pTo;
    return bResult;
}
SHFileOperation操作,如果是相对路径需要后面两个'\0',如"..\\x.xml\0",包括自身的\0
扩展阅读: http://www.vcsos.com/article/pageSource/120216/20120216083823.shtml

转载于:https://www.cnblogs.com/likebeta/archive/2012/04/23/2467046.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值