gzip demo

#include <stdio.h>
#include <zlib.h>

// Demo

int decompress_file(char *infilename, char *outfilename)
{
    int num_read = 0;
    char buffer[128];

    gzFile infile = gzopen(infilename, "rb");
    FILE *outfile = fopen(outfilename, "wb");

    if (!infile || !outfile) {
        return -1;
    }

    while ((num_read = gzread(infile, buffer, sizeof(buffer))) > 0) {
        fwrite(buffer, 1, num_read, outfile);
    }

    gzclose(infile);
    fclose(outfile);
}

int compress_file(char *infilename, char *outfilename)
{
    int num_read = 0;
    char inbuffer[128];

    FILE *infile = fopen(infilename, "rb");
    gzFile outfile = gzopen(outfilename, "wb");

    if (!infile || !outfile) {
        return -1;
    }

    while ((num_read = fread(inbuffer, 1, sizeof(inbuffer), infile)) > 0) {
        total_read += num_read;
        gzwrite(outfile, inbuffer, num_read);
    }
    fclose(infile);
    gzclose(outfile);
}

int main(int argc, char **argv)
{
    compress_file(argv[1],argv[2]);
    decompress_file(argv[2],argv[3]);
}
时间: 2024-10-18 22:44:48

gzip demo的相关文章

Linux命令工具基础04 磁盘管理

Linux命令工具基础04 磁盘管理 日程磁盘管理中,我们最常用的有查看当前磁盘使用情况,查看当前目录所占大小,以及打包压缩与解压缩: 查看磁盘空间 查看磁盘空间利用大小 df -h -h: human缩写,以人类易读方式显示结果(既带单位:比如M/G,如果不加这个参数,显示的数字以B为单位) $df -h /opt/app/todeav/config#df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/VolGroup00-

linux 文件系统结构及命令

1.linux 文件系统结构 / 根目录 root |--mnt/ | |--sdcard/  挂载点 | |--usb0 | |--cdrom |--home | |--soft01 <- 用户主目录 User Home 2.绝对路径:/开始的路径 绝对路径是从目录开始的位置  相对路径:不是以/开始的路径 相当路径是相对与当前目录的路径位置 cd /etc  cd Desktop  cd /home/soft01/Desktop  cd  .. 改变当前工作目录到..(父目录)  cd 改变

Linux针对单多文件的解压缩操作

单文件操作: zip index.zip demo(将demo文件进行zip压缩,取名index.zip) unzip index.zip (解压zip文件) gzip demo(将demo文件进行gzip压缩,得到demo.gz,原demo文件将消失) gzip -d demo.gz(将demo.gz文件进行gzip解压) bzip2 demo(将demo文件进行bzip2压缩,得到demo.bz2,原demo文件将消失) bzip2 -d demo.bz2(将demo.bz2文件进行gzip

liunx_压缩、打包006

打包:我多个文件放到一个文件里 压缩:传输过程中提升速度 创建多个文件:touch {a..z}.txt  创建从a到z的多个txt文件. 打包命令 tar cvf demo.tar *     //将当前目录下所有的文件进行打包 tar -tf demo.tar //查看当前包中所有内容 tar xvf demo.tar *     //将当前目录下所有的文件进行解压 ls -lh demo.tar  //查看文件大小 -rw-r--r-- 1 root root 20K May 29 13:

linux常用命令之------文件操作、文件查看、权限、打包压缩

1.一般公司把linux作为自己的应用服务器,将应用和服务器部署在上面 2.测试一般用来打包.压缩.查日志,写一个简单的shell 获得linux服务器的方式 a:网上租一台云服务器 b:安装vmware 3.用xshell等工具连接vmware虚拟机 看虚拟机与本机网络是否可以ping通,如虚拟机ping www.baidu.com vmware网络连接方式 windows属于多根 linux属于单根:/     linux下一切皆文件 4.linux目录 bin目录:linux中的执行命令,

【转】JS gzip加密字符串并base64输出

http://blog.csdn.net/zunwei/article/details/49886115 最近开发中遇到一些问题,关于js怎么给一个字符串进行字节流加密.下面就详细说下做法. 首先引入pako_deflate.min.js(https://github.com/nodeca/pako/tree/master/dist)插件,附件可以下载 demo: var applistJson = "{"name":"lvzunwei"}";

Android之Gzip/Zip压缩

前言: 做过Android网络开发的都知道,在网络传输中我们一般都会开启GZIP压缩,但是出于刨根问底的天性仅仅知道如何开启就不能满足俺的好奇心的,所以想着写个demo测试一下比较常用的两个数据压缩方式,GZIP/ZIP压缩. 首先认识一下GZIP压缩 GZIP是网站压缩加速的一种技术,对于开启后可以加快我们网站的打开速度,原理是经过服务器压缩,客户端浏览器快速解压的原理,可以大大减少了网站的流量.GZIP最早由Jean-loup Gailly和Mark Adler创建,用于UNIX系统的文件压

Zybo GPIO Demo Run Embedded Linux

1.Environment Ubuntu 12.04 x86_64 Vivado 2013.4 SDK 2013.4 2.Pre-requisites 2.1 CodeSourcery arm-gcc toolchain lite 32-bit compatible git clone https://github.com/xupsh/CodeSourcery.git echo "export PATH=~/CodeSourcery/bin:$PATH" >> ~/.bas

如何在java REST API中用GZip和Jersey压缩相应

有许多情景当你的REST api提供的相应是非常长的,并且我们都知道传递速度和贷款在移动设备/网络上是多重要.当开发支持REST apis的移动app的时候,我认为首要的性能最优化的点就是需要解决.猜猜是什么?因为响应式文本,因此我们能压缩这些文本.而且随着当前的只能手机和平板的能力,在客户端解压文本应该不是个大问题...因此在这篇文章中,如果你使用java的Jersey构建它,我将介绍你怎么能有选择性的压缩REST API响应,这个Jersey事JAX-RS的映射实现(还有更多)... 1.J