具体代码详见我上传的资源:
https://download.csdn.net/download/skyksksksksks/87500898
相信经常玩C++的都知道,如果遇到需要操作压缩文件,怎么办?
以zip压缩文件举例,如果接下来的需求是,
要将一个多级文件下的所有文件、包括文件路径结构,
全部压缩到zip压缩文件中的指定位置,怎么办?
很多人第一时间想到的是,这还不简单?直接上网找一个开源的zip压缩文件库,
然后用现成的API玩,不就行了,真的这么简单?
但是,很多人到这里时,就会傻眼了,
因为很多API只会提供在zip压缩文件指定位置添加指定单个文件,
或者在zip压缩文件指定位置添加文件路径(或者说空文件夹),
想要直接将一个多级文件下的所有文件、包括文件路径结构,
全部压缩到zip压缩文件中的指定位置,门都没有!
到这里是不是已经快要想砸电脑、换编程语言了,别急。
其实这些都是可以通过一些逻辑处理来实现的,有时候需要用到递归调用。
当然如果觉得麻烦,也没事。
为了解决这种尴尬的问题,我索性自己写一个类,
将这些功能做到一个函数中,方便以后使用。
类中函数声明见下方:
/*
@param
pctszFilePath 文件路径
pctszPassword 密码
@return
0 成功、-1 失败
@note 初始化
*/
long Init(LPCTSTR pctszFilePath, LPCTSTR pctszPassword = NULL);
/*
@param
pctszFilePathOfSour 源文件路径
pctszRelativeFilePathOfDest 目标相对文件路径
@return
0 成功、-1 失败
@note 添加文件到压缩文件
*/
long AddFileToZipFile(LPCTSTR pctszFilePathOfSour, LPCTSTR pctszRelativeFilePathOfDest = NULL);
/*
@param
pctszDirectoryOfSour 源路径
pctszRelativeDirectoryOfDest 目标相对路径
@return
0 成功、-1 失败
@note 添加多个文件到压缩文件
*/
long AddFilesToZipFile(LPCTSTR pctszDirectoryOfSour, LPCTSTR pctszRelativeDirectoryOfDest = NULL);
/*
@param
pctszFilePath 文件路径
pctszPassword 密码
@return
0 成功、-1 失败
@note 重新初始化
*/
long ReInit(LPCTSTR pctszFilePath, LPCTSTR pctszPassword = NULL);
/*
@param
pctszDirectoryOfDest 目标路径
@return
0 成功、-1 失败
@note 从压缩文件获取多个文件
*/
long GetFilesFromZipFile(LPCTSTR pctszDirectoryOfDest);
/*
@param
@return
0 成功、-1 失败
@note 释放
*/
long Free();