文件操作 复制移动删除重命名文件文件夹(转帖)

本文介绍了在Windows环境下,如何使用C++封装的函数进行文件和文件夹的复制、删除、移动以及重命名操作。这些函数包括_CopyFile、_DeleteFile、_MoveFile和_ReNameFile,它们利用SHFileOperation结构实现,支持多种操作标志以控制文件操作行为。
摘要由CSDN通过智能技术生成

文件操作 复制移动删除重命名文件文件夹

转自:http://blog.csdn.net/jacky_qiu/archive/2010/12/04/6054759.aspx
━━━━━━━━━━━━━━━━━━━━━━━━

说明:
1.以下封装了4个函数_CopyFile,_DeleteFile,_MoveFile,_ReNameFile
2.每个函数都先拷贝了原来的路径,保证了路径是以2个/0/0结尾。(如果不以2个/0/0结尾,往往会出错)
3.对于文件或文件夹都适用

 

/*
能产生对话框的标志:
FOF_SILENT             //progress dialog           
FOF_RENAMEONCOLLISION  //replace dialog
FOF_NOCONFIRMATION     //confirmation dialog
FOF_NOCONFIRMMKDIR     //asks for your permission to create a new folder
FOF_NOERRORUI          //error message

FOF_ALLOWUNDO             //允许放回回收站,一般这个最好做默认
FOF_NOCONFIRMATION        //不出现确认对话框(当需要覆盖时)
FOF_SILENT                //不显示进度对话框
FOF_NOERRORUI            //No user interface will be displayed if an error occurs.
FOF_NOCONFIRMMKDIR        //如果目的目录不存在,就默认创建,不需确认
FOF_RENAMEONCOLLISION    //如果文件(夹)已存在,自动为其添加序列号修改文件名。此时不会出现确认对话框
FOF_MULTIDESTFILES         //把文件夹里的所有内容复制到FileOp.pTo指定的文件夹里,而不是直接复制一个文件夹
FOF_SIMPLEPROGRESS        //Displays a progress dialog box but does not show the file names
FOF_CONFIRMMOUSE        //Not currently implemented.
FOF_FILESONLY:            //执行通配符,只执行文件;
FOF_WANTMAPPINGHANDLE:    //要求SHFileOperation()函数返回正处于操作状态的实际文件列表,文件列表
名柄保存在hNameMappings成员中。SHFILEOPSTRUCT结构还包含一个SHNAMEMAPPING结构的数组,此数组
保存由SHELL计算的每个处于操作状态的文件的新旧路径。


说明:
1.以下封装了4个函数_CopyFile,_DeleteFile,_MoveFile,_ReNameFile
2.每个函数都先拷贝了原来的路径,保证了路径是以2个/0/0结尾。(如果不以2个/0/0结尾,往往会出错)
3.对于文件或文件夹都适用
*/


/****************************************************************************
复制文件或者文件夹,需要把路径添加2个/0/0
****************************************************************************/
static
bool _CopyFile(const TCHAR *_pFrom,const TCHAR *_pTo,WORD flags=FOF_NOCONFIRMATION)
{
    TCHAR pTo[MAX_PATH]={0};    _tcscpy(pTo,_pTo);
    TCHAR pFrom[MAX_PATH]={0};    _tcscpy(pFrom,_pFrom);

    SHFILEOPSTRUCT FileOp={0};
    FileOp.fFlags=    flags;
    FileOp.pFrom =    pFrom;
    FileOp.pTo     =    pTo;
    FileOp.wFunc =    FO_COPY;
    return SHFileOperation(&FileOp) == 0;    
}

/****************************************************************************
删除文件或者文件夹,需要把路径添加2个/0/0
*****************************

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值