zlib压缩性能非常优良,能将数百M文件压缩到几十M, 从官网下载zpipe.c示例代码,可以直接拿过来用. 

    编译​​zpipe.c​​后使用: zpipe -d <file.hdb>  file.hdb.z 控制台接收输入文件参数. 修改让其直接操作文件:

int main(int argc, char **argv)
{
int ret;
int comp=0; // 测试开关,测试文件压缩和恢复

if(comp)
{
FILE *source=fopen("d:/test/1.hdb","rb"); // 读取二进制文件
FILE *dest=fopen("d:/test/1.hdb.z","wb"); // 写二进制文件

// 压缩文件
ret = def(source, dest, Z_DEFAULT_COMPRESSION);
if (ret != Z_OK)
zerr(ret);

/// 使用完流后,一定要关闭(Flush缓冲区),否则在解压时会报错:zpipe: invalid or incomplete deflate data
fclose(source);
fclose(dest);
}else
{
FILE *source=fopen("d:/test/1.hdb.z","rb"); // 读取二进制文件
FILE *dest=fopen("d:/test/11.hdb","wb");

// 解压文件
ret = inf(source, dest);
if (ret != Z_OK)
zerr(ret);

fclose(source); // 关闭流
fclose(dest);
}

getchar();
return 1;
}