首页 > 其他分享 >bzip2 库 bzlib.h 使用方法

bzip2 库 bzlib.h 使用方法

时间:2023-01-05 11:01:18浏览次数:39  
标签:bzerror bzip2 调用 bzlib BZ2 int 方法 BZ 读取

3.4. High-level interface

此接口提供读取和写入bzip2格式文件的功能。首先,一些通用的要点。

  • 所有函数都采用int*型的第一个参数bzerror。每次调用后,应首先查询bzerror以确定调用的结果。如果bzerrorBZ_OK,则调用成功完成,只有在该情况下才能查询函数的返回值(如果有的话)。如果bzerrorBZ_IO_ERROR,则在读取/写入基础压缩文件时出错,然后应查询errno/perrror以确定出错的原因。bzerror也可以设置为各种其他值;下面根据每个函数给出了精确的细节:
  • 如果bzerror表示一个错误(即除BZ_OKBZ_STREAM_END之外的任何内容),你应当立刻调用BZ2_bzReadClose (或者 BZ2_bzWriteClose,这取决于你是尝试读取还是写入)以释放与stream相关联的全部资源。一旦指示错误,除BZ2_bzReadCloseBZ2_bzWriteClose)外的所有调用的行为都是undefined。这意味着(1)每次调用后都应当检查bzerror,(2)如果bzerror指示一个错误,然后应当调用BZ2_bzReadClose (BZ2_bzWriteClose)进行清理。
  • 传递给BZ2_bzReadOpen/BZ2_bzWriteOpenFILE*参数应该设置为binary模式,大多数Unix系统默认情况下都会这样做,但是其他平台,包含Windows和Mac,不会这样做。如果忽略这一点,在将代码移动到新平台时可能会遇到问题。
  • 内存分配请求由malloc/free处理。目前,在文件I/O函数中没有用户定义的内存分配器的功能(尽管可以很容易地添加)。

3.4.1. BZ2_bzReadOpen

typedef void BZFILE;

BZFILE *BZ2_bzReadOpen( int *bzerror, FILE *f,
                        int verbosity, int small,
                        void *unused, int nUnused );

准备从文件句柄f读取压缩数据。f应当指向一个已打开以供读取的文件,并且未设置错误指示器 (ferror(f))。如果参数small设置为1,库将尝试使用更少的内存来解压缩,代价是牺牲速度。

标签:bzerror,bzip2,调用,bzlib,BZ2,int,方法,BZ,读取
From: https://www.cnblogs.com/sq800/p/17026928.html

相关文章

  • AppStore 打包上传后提示“二进制文件无效” 的解决方法
    昨天提交打包提交App,将包上传到iTunesConnect之后,以为就能发布了,便点击构建版本,发现没有刚刚上传的包,于是就点击"预发行"看一下,会看到"已上传",过不久再刷新一次再看,就变成......
  • Java 如何重写对象的 equals 方法和 hashCode 方法
    前言:Java对象如果要比较是否相等,则需要重写equals方法,同时重写hashCode方法,而且hashCode方法里面使用质数31。接下来看看各种为什么。一、需求:对比两个对象......
  • 网站中引入了多个版本的 JavaScript 库防止对象冲突的方法 - 在线客服系统源码
    如果你在网站中引入了多个版本的JavaScript库,并且在你的JavaScript中使用了同名的对象,则可能会出现对象名称冲突的情况。使用命名空间来解决这个问题。例如,你可以在你......
  • linux的自动化操作相关使用方法汇总 专题
     Crontab中的除号(slash)到底怎么用?crontab是Linux中配置定时任务的工具,在各种配置中,我们经常会看到除号(Slash)的使用,那么这个除号到底标示什么意思,使用中有哪些需要注意的地......
  • python3实现字符串的全排列的方法(无重复字符)两种解决方法
    抛出问题求任意一个字符串的全排列组合,例如a='123',输出123,132,213,231,312,321。(暂时假定字符串没有重复)解决方案目前有两种解决的方法方法一:defstr_sort(s=''):if......
  • vue的set()方法
    $set对vue双向绑定的。有时候数据是单项的当第二个部分为真的时候,然后将第三部分替换或添加进去。第一个是添加,添加到数组末尾。之后的是替换。什么看得懂就从哪里开始......
  • JS获取字符串长度的常用方法,汉字算两个字节
    JS获取字符串实际长度(双字节字符、汉字算两个字符)//第一种GetLength=function(str){varrealLength=0;for(vari=0;i<str.length;i++){......
  • java基础toString()方法
    1.Object()类下的toSting()方法Java默认的toString方法来自Object类 在Java中每个类都直接或者间接继承Object类,toString()方法同样是来自于Object类在没有重写toString......
  • Python内置方法
    开胃菜(小例子、用法):help(method)查看帮助,按space或enter继续显示多的行数(--More--),按ctrl+c退出。如果想要查看有哪些方法,比如list有哪些方法,可以:dir(list)输出:>......
  • icp备案怎么查询?查询ICP的方法?
    网站ICP备案的目的就是国家为了防止一些人在网上从事一些非法经营活动,打击不良信息的传播,如果网站不备案的话,将网站信息放在国内主机中,我们是无法正常打开网站的。做新网站......