压缩解压缩文件zlib
参考
https://blog.csdn.net/auccy/article/details/81194838
https://blog.csdn.net/kkwant/article/details/81809711
使用zlib库解压文件
auccy 2018-07-25 01:01:18 8470 已收藏 9
分类专栏: Windows
版权
下载zlib库源码:http://www.zlib.net/
编译lib库
选择对应的Visual Studio工程目录打开zlibvc.sln文件,工程设置为Release模式,选中zlibstat项,将预处理器中的ASMINF宏删除(重要否则会产生 L_get_length_code_mmx 的崩溃)
编译成功后会生成zlibstat.lib库
将 zlibstat.lib,zlib.h,zconf.h 拷贝到工程目录,并通过 属性-连接器-输入-附加依赖项 导入zlibstat.lib;
将unzip.h,unzip.c,ioapi.h,ioapi.c拷贝到工程目录,并添加到工程
这几个文件在源码中的位置如图
测试工程的设置:
核心代码:
#include <iostream>
#include <string>
#include "unzip.h"
#include <direct.h>bool unzipCurrentFile(unzFile uf, const char *destFolder)
{char szFilePath[512];unz_file_info64 FileInfo;if (unzGetCurrentFileInfo64(uf, &FileInfo, szFilePath, sizeof(szFilePath), NULL, 0, NULL, 0) != UNZ_OK)return false;size_t len = strlen(szFilePath);if (len <= 0){return false;}std::string fullFileName = destFolder;fullFileName = fullFileName + "\\" + szFilePath;if (szFilePath[len - 1] == '\\' || szFilePath[len - 1] == '/'){_mkdir(fullFileName.c_str());return true;}auto file = fopen(fullFileName.c_str(), "wb");if (file == nullptr){return false;}const int BUFFER_SIZE = 4096;unsigned char byBuffer[BUFFER_SIZE];if (unzOpenCurrentFile(uf) != UNZ_OK){fclose(file);return false;}while (true){int nSize = unzReadCurrentFile(uf, byBuffer, BUFFER_SIZE);if (nSize < 0){unzCloseCurrentFile(uf);fclose(file);return false;}else if (nSize == 0){break;}else{size_t wSize = fwrite(byBuffer, 1, nSize, file);if (wSize != nSize){unzCloseCurrentFile(uf);fclose(file);return false;}}}unzCloseCurrentFile(uf);fclose(file);return true;
}bool unzipFile(std::string zipFileName, std::string goalPath)
{unzFile uf = unzOpen64(zipFileName.c_str());if (uf == NULL)return false;unz_global_info64 gi;if (unzGetGlobalInfo64(uf, &gi) != UNZ_OK){unzClose(uf);return false;}std::string path=zipFileName;auto pos = path.find_last_of("/\\");if (pos != std::string::npos)path.erase(path.begin() + pos, path.end());for (int i = 0; i < gi.number_entry; ++i){if (!unzipCurrentFile(uf, goalPath.c_str())){unzClose(uf);return false;}if (i < gi.number_entry - 1){if (unzGoToNextFile(uf) != UNZ_OK){unzClose(uf);return false;}}}unzClose(uf);return true;
}int main()
{unzipFile("test.zip", "C:\\Users\\Administrator\\Desktop\\cc");getchar();return 0;
}
博友反馈解压的目标目录需要存在
即 C:\\Users\\Administrator\\Desktop\\cc文件夹需要提前创建
压缩解压缩文件zlib相关推荐
- linux如何查看归档文件,linux基本命令:文本搜索,拷贝文件,移动文件,归档管理,压缩解压缩文件,查看命令位置...
1.文本搜索:grep grep查找的是文件内容中的文本,字符需要用引号括起来,单引双引都可以 格式:grep [-选项] '内容' 文件名 例如: -v显示不包含匹配文本的所有行(相当于求反) -n ...
- java使用tar算法压缩解压缩文件、数据流、byte[]字节数组
全栈工程师开发手册 (作者:栾鹏) java教程全解 java使用tar算法压缩解压缩文件.数据流.byte[]字节数组 需要添加org.apache.commons.compress包,下载 测试代 ...
- java使用BZip算法压缩解压缩文件、数据流、byte[]字节数组
全栈工程师开发手册 (作者:栾鹏) java教程全解 java使用BZip算法压缩解压缩文件.数据流.byte[]字节数组 需要添加org.apache.commons.compress包,下载 测试 ...
- 在Linux中压缩/解压缩文件
关于后缀名为tar的(压缩和解压) # 打包文件 tar -cvf 打包文件.tar 被打包文件/路径... (-c打包,-v显示过程,-f指定打包后的文件名) # 解包文件 tar -xvf 打包文 ...
- Linux的压缩/解压缩文件命令 zip 和 tar
Linux的压缩/解压缩命令详解及实例 压缩服务器上当前目录的内容为xxx.zip文件 zip -r xxx.zip ./* 解压zip文件到当前目录 unzip filename.zip 另:有些服 ...
- Java中压缩/解压缩文件有什么好的解决方案呢?
转入: Java中压缩/解压缩文件有什么好的解决方案呢? 下文笔者将讲述java中压缩/解压缩文件的处理方法分享,如下所示: 我们都知道,在java中JDK的Apache默认带有Zip库 但是它太大, ...
- c# 利用 GZipStream 压缩解压缩文件(所有类型的文档)
c# 利用 GZipStream 压缩解压缩文件(所有类型的文档) using System; using System.Collections.Generic; using System.IO; u ...
- c语言程序压缩解压缩文件夹,【转】使用VC++压缩解压缩文件夹
前言 项目中要用到一个压缩解压缩的模块, 看了很多文章和源代码, 都不是很称心, 现在把我自己实现的代码和大家分享. 要求: 1.使用Unicode(支持中文). 2.使用源代码.(不使用静态或者动态 ...
- 使用系统(win7/win10/windows)压缩/解压缩文件,基于vbs脚本,执行bat批处理
功能说明 window操作系统 未安装压缩的软件 有需要压缩.解压缩文件 支持单文件压缩 支持目录及子目录压缩 目录结构 压缩脚本(zip.vbs) Set objArgs = WScript.Arg ...
- zlib压缩解压缩文件
1. 如何获得zlib zlib的主页是:http://www.zlib.net/ 偶是从www.xunlei.com搜到的. 2. 用VC++6.0打开 把 下载的源代码解压打开,VC6.0的工程已 ...
最新文章
- Asp.net的Session和Cookie传值方式
- ubuntu 安装VmTool
- SoftReference的用法
- c语言pause()函数(让进程暂停直到信号出现)
- php 框架 路由解析,来!狂撸一款PHP现代化框架 (路由的设计)
- html5 渐变色矩形,使用HTML5画布元素的矩形渐变
- AJAX如何做出输入框提示!
- [动态规划] leetcode 10 正则表达式匹配
- Berkeley DB Java Edition
- 如何写代码,才能越写越轻松?
- Windows核心编程_Edit操作
- VC6.0无法进入调试
- WEB漏洞挖掘——思路指南
- IIS发布可下载文件的站点
- Arcgis重采样或者裁剪的问题
- 无线扩音器FCC认证CE认证需要满足那些要求
- 计算机九九乘法口诀表,九九乘法口诀表
- App - 电影天堂第三方客户端
- 高校社团管理系统java_高校社团管理系统设计及实现.doc
- 学PS基础:Photoshop 技能167个