zib底层时deflate算法. 详讲https://blog.csdn.net/ghevinn/article/details/45747465
- sudo yum install zlib-devel
gzFile gzopen(const char* path,const char* mode)
path:要打开的gzip文件名
mode:rb读/wb写
返回值 : 返回一个gzFile指针,失败返回NULL .
int gzread(gzFile file,void buf,unsigned len) 从gzip文件中读取解压后的数据.
file:gzopen返回的操作句柄
buf:一块缓冲区,用于存放解压后的数据
len:buf缓冲区的数据大小,
返回值: 返回读取到解压后的数据大小,失败返回-1.
int gzwrite(gzFile file,void buf, unsigned len)
file:gzopen返回的操作句柄
buf:还未压缩的数据,
len:buf中数据的大小,
成功返回压缩了多少数据. 失败返回0;
int gzclose(gzFile file)关闭gzip文件,释放资源.
这是针对直接在内存里进行压缩的,上面的时压缩成文件.,
1 //把源缓冲压缩成到目的缓冲,一个函数就完成了
2 int compress (Bytef *dest, uLongf *destLen, const Bytef *source, uLong sourceLen);
3
4 //功能和compress函数一样,多了一个参数可以指定压缩质量和压缩数度之间的关系(0-9)。要想得到高的压缩比就要多花时间
5 int compress2 (Bytef *dest, uLongf *destLen,const Bytef *source, uLong sourceLen,int level);
6
7 //计算需要的缓冲区长度. 假设你在压缩之前就想知道你的产度为 sourcelen 的数据压缩后有多大, 可调用这个函数计算一下,这个函数并不能得到精确的结果,但是它可以保证实际输出长度肯定小于它计算出来的长度
8 uLong compressBound (uLong sourceLen);
9
10 //解压缩
11 int uncompress (Bytef *dest, uLongf *destLen,const Bytef *source, uLong sourceLen);
注意:
执行文件时要 -lz 链接库使用,不然会报错.
可以在/usr/include/zlib.h里面看到它的头文件