zip 库 工作总结

最近在给项目加一些压缩和解压缩的工作。其中收录了一些 比较好的网址:

1.gzip,zip,zlib,7z,tar介绍
http://blog.csdn.net/lanmenghcc/article/details/40071923


2.zip压缩算法介绍
http://blog.csdn.net/a237443534/article/details/39857543


2.ziplib库 地址
https://nih.at/libzip/


3.zip结构 网址
http://blog.sina.com.cn/s/blog_4c3591bd0100zzm6.html


正文:由于项目中已经有了 zlib库(1.1.3)版本,所以 一开始准备 使用 这个库做一些解压缩的工作。后来发现 这个版本的 库 只 支持内存压缩,compress 和 uncompress函数,而且 压缩 格式 还是 gzip 。linux 中 常见的 压缩格式 .ta.gz 中的 gz 指的 就是 这个格式。ta 是 打包功能,gz 和 压缩功能,必须 两个程序 一起使用 才可以 压缩 文件夹 和 解压缩 文件夹。zip格式 是打包 和 压缩 都支持的。


后来了解到有ziplib库支持 zip压缩 和 解压缩,不过 后来 没有 使用这个库。(ps:由于 领导 不让用,呵呵,就是这么霸气)。

后来 又下载了最新的 zlib库,通过 minizip模块 来进行 zip压缩 和 解压缩。


这个是网盘的地址,包括了zlib1.2.8版本,ziplib1.1.3版本和一个 minizip的测试代码。

https://pan.baidu.com/s/1geKuTnt

获取解压缩的代码:

ZEXTRACT_API int GetFileInZip(CMemBuffer& buffer, const char* zfn, const char* fname, const char* password)
{
	unzFile uf = unzOpen(zfn);
	
	if (NULL == uf)
	{
		printf("unzOpen failed...\n");
		return -1;
	}
	
	int err = unzLocateFile(uf, fname, 0);
	if (UNZ_OK != err)
	{
		printf("GetFileInZip unzLocateFile failed... error:%d\n");
		return err;
	}
	
	unz_file_info file_info;
	char filename_inzip[256];
	
	err = unzGetCurrentFileInfo(uf, &file_info, filename_inzip, sizeof(filename_inzip), NULL, 0, NULL, 0);

	if (UNZ_OK != err)
	{
		printf("unzGetCurrentFileInfo failed... error:%d\n", err);
		return err;
	}

	err = unzOpenCurrentFilePassword(uf, password);

	if (UNZ_OK != err)
	{
		printf("unzOpenCurrentFilePassword failed... error:%d\n", err);
		return err;
	}

	char* pBuf
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值