这篇文章将为大家详细讲解有关zlib中gzip file常用函数有哪些,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
打开关闭函数:gzopen、gzclose
写gzip file函数:gzwrite、gzputs、gzputc、gzprintf
读gzip file函数:gzread、gzgets、gzgetc
其他函数:gztell、gzseek、gzrewind
两个不太好理解的函数:gzungetc、gzoffset
代码如下:
#include <iostream> #include <string> #include <zlib.h> #include <zconf.h> using namespace std; void main(int argc, char *argv[]) { //ab每次写的时候追加,wb每次写会覆盖之前的内容 gzFile gzfp = gzopen("test.gz","rb"); if(NULL == gzfp) { cout<<"Fail to open file."<<endl; return; } /*******************************写gz文件*******************************/ //当前写的位置为0, //write时,只能向后seek cout<<"gztell:"<<gztell(gzfp)<<endl; gzseek(gzfp, 10, 0); cout<<"gztell:"<<gztell(gzfp)<<endl; //gzwrite返回值,是写入的字节数,压缩前的字节数 char buf[20] = "1abcdefghijklmn"; int len = strlen(buf); cout<<"gzwrite:"<<gzwrite(gzfp, buf, len)<<endl; //gzputs返回值,是写入的字节数,压缩前的字节数 cout<<"gzputs:"<<gzputs(gzfp, "zxc")<<endl; //gzputs返回值,是字符'b'的值 cout<<"gzputc:"<<gzputc(gzfp, 'b')<<endl; //gzprintf cout<<"gzprintf:"<<gzprintf(gzfp, "%d,%s", 99, "efg")<<endl; /*******************************读gz文件*******************************/ //gzread gzseek(gzfp, 10, 0); //gzungetc放一个字符到流中,下次读取时,先读这个字符。 //gzungetc后,调用gzseek、gzrewind,gzungetc将失效。 gzungetc('z', gzfp); //gzread返回值,是实际读取的字节数,解压缩后的字节数 //如果在写入时调用了,gzseek了10个字节,那么这10个字节填充0。读取时遇到这个10个字节时,会认为是字符串的结束。 char sz_read_buf[100] = {0}; gzread(gzfp, sz_read_buf, 10); cout<<"gzread:"<<sz_read_buf<<endl; //gzgets gzseek(gzfp, 10, 0); memset(sz_read_buf, 0, 100); gzgets(gzfp, sz_read_buf, 99); cout<<"gzgets:"<<sz_read_buf<<endl; //gzgetc gzseek(gzfp, 14, 0); gzrewind(gzfp); cout<<"gzgetc:"<<gzgetc(gzfp)<<endl; //gzoffset //返回压缩文件中将要读或写的位置。 //举例:第一次写入25个字节,压缩后44; // 第二次写入35个字节,2次写入压缩后91。 // // 当从头读取10个字节时,gzoffset为44 // 当从头读取30个字节时,gzoffset为91 cout<<"gzoffset:"<<gzoffset(gzfp)<<endl; gzclose(gzfp); }
关于zlib中gzip file常用函数有哪些就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。