StupidBeauty
??Read times:327????Posted at:Mon Jan 2 07:20:34 2017?? - no title specified

QuaZIP  0.7.2文档翻译 :用法,Usage

本页面说明关于QuaZIP 用法的基本信息。阅读 QuaZip QuaZipFile 类的详细文档,以具体了解 ,QuaZIP 可以做什么,不可以做什么。 同时,建议阅读zip.h 和 unzip.h 文件(取自 于原始的ZIP/UNZIP 软件包 )中的注释内容。QuaZIP 毕竟只是 做了一层封装,其中加入 了少量的便利性扩展和改动。

QuaZip 类,代表着 ZIP压缩 包, QuaZipFile 类,代表着压缩包中的某个文件,并且继承了 QIODevice 。此处存在 着一个限制,那就是,对于每个 QuaZip 实例 ,只能存在一个对应的 QuaZipFile 实例, 这就使得事情变得有点令人困惑了,为什么会有两个类,而不是一个。 这个,实际上是接口设计上的一个失误。

术语

"QuaZIP"表示这整个库,而"QuaZip" (注意其中的小写字母)只是其中的一个类。

"ZIP/UNZIP API" "minizip" ,表示Gilles Vollant 的ZIP/UNZIP 软件包中的原始接口。 我们对它做了一些小修改,以便更好地与 Qt 整合。 这些修改,在源代码级别和二进制级别都不与官方的版本相兼容,因此, 妳不能简单地将新版minizip 的代码放置到QuaZIP 源代码中, 预期它能正常工作。

"ZIP" "ZIP压缩 " "ZIP文件" ,表示任意的 ZIP压缩 包。 一般情况下,它就是一个以".zip" ( ".ZIP")作为后缀名的普通文件, 不过也可能会是一个可寻址的 QIODevice  (例如 QBuffer ,但不会是 QTcpSocket)

"压缩包中的一个文件""ZIP中的一个文件",或者类似的其它说法,表示的是,从某个ZIP 压缩包中读取或者向其中写入的文件。

错误处理

基本 上,对ZIP/UNZIP API 中任何接口的调用都会返回某种错误码。原始接口 中的大部分错误检查工作,实际上都可以在这个封装库中进行,不过呢, 那会导致引入不必要的臃肿代码,却不会带来任何好处。因此 QuaZIP仅仅 会检查那些无法通过ZIP/UNZIP API 检查的错误情况。例如 ZIP/UNZIP API 中并没有 "ZIP打开模式" 的概念,因为读取 和写入模式是完全分开的。 另一方面呢,为了避免 弄出像 "QuaZipReader" "QuaZipWriter" 这样的东西, QuaZIP 中引入了 "ZIP打开模式" 的概念, 这样,就能够只用一个类 ( QuaZip ) 来完成读取和写入操作了。然而 ,这样就引入了额外 的打开模式检查要求,这在ZIP/UNZIP 软件包中是没有的。

因此,错误检查是在两个层面上进行的(QuaZIP的层面和ZIP/UNZIP API的层面),这可能会引起一些困惑。以下是针对这种困惑提出的正确进行错误检查的建议:

  • •. QuaZip QuaZipFile 类中都有 getZipError()函数 ,它们返回 的是最后 一次调用ZIP/UNZIP API 时产生的错误码。 大部分函数,在执行成功时会将错误码重置为UNZ_OK,而在失败时会设置对 应的错误码。某些函数 不会重置错误码。 这其中大部分都是常量( const )函数,完全不 访问到ZIP 压缩包。 反过来呢,其它的一些函数,是会( do )访问到ZIP 压缩包,但也不会重置或设置错误码。例如, QuaZipFile::pos() 函数 。文档 中会明确标示出这样的函数。

  • •. 大部分函数都会使用自己独有的方式来报告错误,例如返回无效 (null)字符串、负数值或者逻辑假( false )。如果 这样的某个函数返回了错误值,那么,应当再调用getZipError()以获取更详细的错误信息。参考ZIP/UNZIP 软件 包中的"zip.h"和"unzip.h"文件,以了解错误码的含义。

  • •. 如果某个函数返回 了表示出错的值 (例如逻辑 假( false ) ,但是getZipError()返回的却是UNZ_OK, 这就表明妳 犯了某个明显的错误。例如 ,针对一个只读取方式打开或者根本没有打开的压缩包做写入操作。最好 不要那么做! 大部分函数,在这种情况下也会通过qWarning()输出一条警告。阅读各个函数 的文档,以了解,在哪些情况下,不应当调用它们。

我明白,这有些乱,然而我也无法找到更好的错误处理方法了。

未知美人

- no title specified

为OsoLinux用户提供的RPM包仓库

 
??Like this article? Give us some tips.??