zlib4cj 库

介绍

该库提供DEFLATE、zlib、gzip 流式压缩和解压功能、整体压缩和解压功能。

1 主要接口

1.1 压缩和解压的基类

class Stream

此类是流压缩和解压缩基类。

public open class Stream {
    /*
     * 调用 init(),初始化 Stream 
     */
    public init()

    /*
     * 判断内部输出缓冲区是否为空,为空后,调用解压缩接口前需先重新设置输入数据 
     * 返回值 Bool - 判断内部输出缓冲区是否为空,如果是空返回 true,否则返回 false 
     */
    public func isInbufEmpty(): Bool

    /*
     * 检查输出缓冲区中是否有数据 
     * 返回值 Bool - 如果输出缓冲区中有数据,则返回 true,否则返回 false 
     */ 
    public func isHaveOutData(): Bool 

    /*
     * 设置输入缓冲区 
     * 参数 buf - 将 buf 设置为输入缓冲区 
     * 返回值 Int64 - 返回输入缓冲区实际剩余空间 
     */ 
    public func setInBuf(buf: Array<UInt8>): Int64 

    /*
     * 设置输入缓冲区 
     * 参数 buf - 将 buf 设置为输入缓冲区 
     * 参数 start - 将 start 设置为输入缓冲区当前光标位置 
     * 参数 len - 将 len 设置为输入缓冲区剩余空间 
     * 返回值 Int64 - 返回输入缓冲区实际剩余空间 
     */ 
    public func setInBuf(buf: Array<UInt8>, start: Int64, len: Int64): Int64 

    /*
     * 设置输出缓冲区 
     * 参数 buf - 将 buf 设置为输出缓冲区 
     * 返回值 Int64 - 返回输出缓冲区实际剩余空间 
     */ 
    public func setOutBuf(buf: Array<UInt8>): Int64 

    /*
     * 设置输出缓冲区 
     * 参数 buf - 将 buf 设置为输出缓冲区 
     * 参数 start - 将 start 设置为输出缓冲区当前光标位置 
     * 参数 len - 将 len 设置为输出缓冲区剩余空间 
     * 返回值 Int64 - 返回输出缓冲区实际剩余空间 
     */ 
    public func setOutBuf(buf: Array<UInt8>, start: Int64, len: Int64): Int64 
    
    /*
     * 重置输出缓冲区状态 
     */ 
    public func resetOutBuf(): Unit

    /*
     * 返回输出缓冲区中数据长度 
     * 返回值 Int64 - 返回输出缓冲区中数据长度 
     */ 
    public func getOutDataLength(): Int64 

    /*
     * 返回总输出数数据字节数 
     * 返回值 Int64 - 返回总输出数数据字节数 
     */ 
    public func getTotalOut(): Int64 

    /*
     * 返回总输入数据字节数 
     * 返回值 Int64 - 返回总输入数据字节数 
     */ 
    public func getTotalIn(): Int64
}

1.2 压缩接口

class Deflate

此类继承 Stream, 实现压缩功能,提供流式压缩接口 deflateInit 、 deflate 、 deflateBound 、 setGzipHeader 、 setDictionary 。
public class Deflate <: Stream { 
    /*
    * 调用 init(),初始化 deflate. 
    */ 
    public init() 
    
    /*
    * 初始化压缩参数、状态,为内部缓冲区申请内存 
    * 参数 level - 压缩级别,默认值为 LEVEL_DEFAULT_COMPRESSION 
    *              (压缩级别 0-9, LEVEL_DEFAULT_COMPRESSION = 6) 
    *
    * 返回值 UInt32 - 返回执行 deflateInit 函数的状态值,如果正常执行完 
    *                成返回值为 Z_OK (函数的返回值: Z_OK = 0) 
    */ 
    public func deflateInit(level: Int64): Int32
    
    /*
    * 初始化压缩参数、状态,为内部缓冲区申请内存 
    * 参数 level - 压缩级别,默认值为 LEVEL_DEFAULT_COMPRESSION 
    *              (压缩级别 0-9, LEVEL_DEFAULT_COMPRESSION = 6) 
    * 参数 wbits - 窗口位数,DEFLATE为-15, ZLIB为15, GZIP为(15+16)
    *
    * 返回值 UInt32 - 返回执行 deflateInit 函数的状态值,如果正常执行完 
    *                成返回值为 Z_OK (函数的返回值: Z_OK = 0) 
    */ 
    public func deflateInit(level: Int64, wbits: Int64): Int32
    
    
    /*
    * 初始化压缩参数、状态,为内部缓冲区申请内存 
    * 参数 lev - 压缩级别,默认值为 LEVEL_DEFAULT_COMPRESSION 
    *              (压缩级别 0-9, LEVEL_DEFAULT_COMPRESSION = 6) 
    * 参数 wbits - 窗口位数,DEFLATE为-15, ZLIB为15, GZIP为(15+16)
    * 参数 memLevel - 内存级别,默认值为 DEF_MEM_LEVEL (内存级别: 
    *               memlevel 1-9, DEF_MEM_LEVEL = 8) 
    * 参数 strategy - 压缩策略,默认值为 Z_DEFAULT_STRATEGY,取值为: 
    *                 Z_DEFAULT_STRATEGY:20 
    *                 Z_FILTERED:21 
    *                 Z_HUFFMAN_ONLY:22 
    *                 Z_RLE:23 
    *                 Z_FIXED:24 
    *
    * 返回值 UInt32 - 返回执行 deflateInit 函数的状态值,如果正常执行完 
    *                成返回值为 Z_OK (函数的返回值: Z_OK = 0) 
    */ 
    public func deflateInit2(lev: Int64, wbits: Int64, memLevel: UInt32, strategy: UInt32): Int32

    /*
     * 压缩数据 
     *
     * 参数 flush - 缓冲处理类型 
     *              Z_NO_FLUSH: 计算输出结果前需要缓冲的数据量,以此来最大化压缩率。 
     *              Z_SYNC_FLUSH:所有未输出的结果会被 flush 到输出缓冲区,并以字节为单 位进行对齐。 
     *              Z_PARTIAL_FLUSH:所有未输出的结果会被 flush 到输出缓冲区中,但是输出 不会以字节为单位进行对齐。 
     *              Z_BLOCK:一个 deflate 块已经结束并释放,解压程序可能需要等待下一个块 被吐出时才能进行解压。这个 
     *                      特性可以用于控制 deflate 块的吞吐。 
     *              Z_FULL_FLUSH:所有的输出都会像 Z_SYNC_FLUSH 一样被冲出,并且压缩状 态会被重置,这样如果之前的 
     *                          已压缩数据被损坏或有随机访问需求,那么解压程序可以从这 个点重新开始运行。 
     *              Z_FINISH:所有的输入都会被处理并且所有的输出都会被冲出。 
     *
     * 返回值 UInt32 - 返回执行 deflate 函数的状态值 
     */ 
    public func deflate(flush: UInt32): UInt32

    /*
     * deflate 结束
     *
     * 返回值 UInt32 - 返回执行 deflateEnd 函数的状态值
     */
    public func deflateEnd(): UInt32

    /*
     * 根据源数据大小,计算压缩后数据最大尺寸,必须在 deflateInit 和 setGzipHeader 之后调用 
     *
     * 参数 sourceLen - 源数据大小 
     *
     * 返回值 Int64 - 压缩后数据最大尺寸 
     */
    public func deflateBound(sourceLen: Int64): Int64

    /*
     * 压缩开始前预设字典 (deflateInit 之后, deflate 之前调用) 
     * 设置的字典必须和要压缩的信息有关联关系,且字典中有效信息长度大于2,否则此设置无效。
     *
     * 参数 dict - 将数组 dict 中的数据设置为字典 
     *
     * 返回值 UInt32 - 返回执行 setDictionary 函数的状态值,如果正常执行完成返回值 
     *                 为 Z_OK (函数的返回值: Z_OK = 0) 
     */ 
    public func setDictionary(dict: Array<UInt8>): UInt32
    
    /*
     * 当压缩文件为gzip格式时,此命令用于设置gzip格式的标头信息。
     *
     * 参数 gzhead - gzip格式的标头信息 
     *
     * 返回值 UInt32 - 执行完成返回值 
     *                 为 Z_OK (函数的返回值: Z_OK = 0) 
     */ 
    public func deflateSetHeader(gzhead: GZIPHeader): Int32 
}

1.2 解压接口

class Inflate
此类实现解压功能, 提供流式压缩接口 inflateInit 、 inflate 、 getGzipHeader 、 setDictionary 、 inflateSync 。
public class Inflate <: Stream { 
    /*
     * 调用 init(),初始化 inflate. 
     */ 
    public init() 
    
    /*
     * 初始化解压参数、状态、部缓冲区, 适用于DEFLATE和ZLIB格式初始化函数 
     *
     * 返回值 UInt32 - 返回执行 inflateInit 函数的状态值,如果正常执行完成返回值 
     *                 为 Z_OK (函数的返回值: Z_OK = 0) 
     */ 
    public func inflateInit(): UInt32

    /*
     * 初始化解压参数、状态、部缓冲区, 适用于DEFLATE,ZLIB和GZIP格式初始化函数, DEFLATE应为-15, ZLIB应为15, GZIP应为(15+16)
     *
     * 参数 wbits - 窗口字节数 
     * 返回值 UInt32 - 返回执行 inflateInit2 函数的状态值,如果正常执行完成返回值 
     *                 为 Z_OK (函数的返回值: Z_OK = 0) 
     */ 
    public func inflateInit2(wbits: Int32): UInt32

    /*
     * 解压数据 
     *
     * 参数 flush - 缓冲处理类型 
     *              Z_SYNC_FLUSH: 要求 inflate() 冲出尽可能多的输出到输出缓冲区中。 
     *              Z_BLOCK:这个参数选项在处理合并 deflate 流或者往已有的流中添加内容时 派上用场,可以用来检查当前已消耗的数据的位数。 
     *              Z_TREES:可以用来检查 deflate 块头部的长度,以便之后在 deflate 块中 进行随机访问。 
     *              Z_FINISH:所有的解压操作都需要在一次调用中完成,所有的输入都会被处理并 且所有的输出都会被冲出。
     *
     * 返回值 UInt32 - 返回执行 inflate 函数的状态值 
     */ 
    public func inflate(flush: UInt32): UInt32

    /*
     * inflate 结束
     *
     * 返回值 UInt32 - 返回执行 inflateEnd 函数的状态值
     */
    public func inflateEnd(): UInt32

    /*
     * 设置字典,当 WrapType (压缩文件格式: ZLIB/DEFLATE) 类型为 DEFLATE 格式时, 在 inflateInit 之后 inflate 之前调用; 
     *          当 WrapType 类型为 ZLIB 格式时,在 inflate 返回 Z_NEED_DICT(函数的返回值: Z_NEED_DICT = 2) 后调用;  
     * 如果压缩时设置了字典,则解压前必须设置相同的字典 
     *
     * 参数 dict - 将数组 dict 中的数据设置为字典 
     *
     * 返回值 UInt32 - 返回执行 setDictionary 函数的状态值,如果正常执行完成 
     *                 返回值为 Z_OK (函数的返回值: Z_OK = 0) 
     */ 
    public func setDictionary(dict: Array<UInt8>): UInt32 

    /*
     * 解压时跳过非法的压缩数据,从下一个全刷新点开始解压,压缩时选择 
     * Z_FULL_FLUSH (冲洗类型: Z_FULL_FLUSH = 13) 策略会生成带全刷 
     * 新点的压缩数据 
     *
     * 返回值 UInt32 - 返回执行 inflateSync 函数的状态值,如果正常执行完成返回 
     *                 值为 Z_OK (函数的返回值: Z_OK = 0) 
     */ 
    public func inflateSync(): UInt32
    
    /*
     * 用于在解压 gzip 格式数据流‌ 时获取文件头信息(如原始文件名、修改时间等元数据),仅当解压时设置 wBits = 15 + 16时生效.
     *
     * 返回值 UInt32 - 返回 Z_OK 表示成功,Z_STREAM_ERROR 表示流状态非法 
     */ 
    public func getGzipHeader(gzhead: GZIPHeader): Int32 
}

1.3 流式压缩接口

1.3.1 CompressOutputStream
CompressOutputStream
/*
 * 类名 - CompressOutputStream
 * 功能 - CompressOutputStream基类
 */
public open class CompressOutputStream  {

    /*
     * 构造函数 
     * 参数 out - 输出流
     * 参数 deflater - 压缩类Deflate
     * 参数 size - 压缩缓存大小
     * 参数 ownDeflate - 是否是同一使用者的压缩类
     * 参数 aotuOutClose - 是否默认关闭输出流
     */
    protected init(out: OutputStream, deflater: Deflate, bufferSize: Int64, ownDeflate: Bool, aotuOutClose: Bool) 

    /*
     * 功能 - 设置字典, 支持deflate和zlib的字典设置, gzip不支持
     * 
     * 参数 dict - 字典数组
     * 返回值 Int32 - 成功返回Z_OK
     */
    public func setDictionary (dict: Array < UInt8 >) : Int32

    /*
     * 功能 - 写入需要压缩的数据
     * 
     * 参数 buffer - 压缩数据
     * 返回值 Unit - Unit
     */
    public func write (buffer: Array < Byte >) : Unit

    /*
     * 功能 - 刷入输出流中, 若此流中数据已刷完或无数据刷入的情况下, 调用此方法可能无法刷出数据流
     * 
     * 返回值 Unit - Unit
     */
    public func flush () : Unit

    /*
     * 功能 - 关闭流
     * 
     * 返回值 Unit - Unit 
     */
    public func close () : Unit
    
    /*
     * 功能 - 获取压缩类
     * 
     * 返回值 Deflate - Deflate 
     */
    public open func getDeflater(): Deflate 

    /*
     * 功能 - 判断流是否关闭
     * 
     * 返回值 Bool - 关闭返回true 
     */
    public open func isClosed(): Bool

    /*
     * 功能 - 输出流完成
     * 
     * 返回值 Unit - Unit
     */
    public func finish () : Unit
    
    /*
     * 功能 - 获取解压的总数据长度
     * 
     * 返回值 Int64 - 解压的总数据长度
     */
    public func getTotalIn () : Int64

    /*
     * 功能 - 获取已解压的总数据长度
     * 
     * 返回值 Int64 - 已解压的总数据长度
     */
    public func getTotalOut () : Int64

    /*
     * 功能 - 获取未解压的总数据长度
     * 
     * 返回值 Int64 - 未解压的总数据长度
     */
    public func getAvailIn () : Int64
    
    /*
     * 功能 - 获取当前输出数组的位置
     * 
     * 返回值 Int64 - 获取当前输出数组的位置
     */
    public func getPositionOut(): Int64
}

1.3.2 DeflaterOutputStream类
/*
 * 类名 - DeflaterOutputStream
 * 功能 - DEFLATE格式流式压缩
 */
public class DeflaterOutputStream <: CompressOutputStream {

    /*
     * 构造函数 
     * 参数 out - 输出流
     * 参数 bufferSize - 内部缓存大小
     * 参数 level - 压缩级别
     * 参数 memLevel - 内存级别
     * 参数 strategy - 压缩策略
     */
    public init (out: OutputStream, 
                bufferSize!: Int64 = 1024,
                level!: Int64 = 6,
                memLevel!: UInt32 = DEF_MEM_LEVEL,
                strategy!: UInt32 = Z_DEFAULT_STRATEGY)
}

1.3.3 GzipOutputStream类
/*
 * 类名 - GzipOutputStream
 * 功能 - Gzip格式流式压缩
 */
public class GzipOutputStream <: CompressOutputStream {

    /*
     * 构造函数 
     * 参数 out - 输出流
     * 参数 bufferSize - 内部缓存大小
     * 参数 level - 压缩级别
     * 参数 memLevel - 内存级别
     * 参数 strategy - 压缩策略
     */
    public init (out: OutputStream, 
                bufferSize!: Int64 = 1024,
                level!: Int64 = 6,
                memLevel!: UInt32 = DEF_MEM_LEVEL,
                strategy!: UInt32 = Z_DEFAULT_STRATEGY)

}

1.3.4 ZlibOutputStream类
/*
 * 类名 - ZlibOutputStream
 * 功能 - Zlib格式流式压缩
 */
public class ZlibOutputStream <: CompressOutputStream {

    /*
     * 构造函数 
     * 参数 out - 输出流
     * 参数 bufferSize - 内部缓存大小
     * 参数 level - 压缩级别
     * 参数 memLevel - 内存级别
     * 参数 strategy - 压缩策略
     */
    public init (out: OutputStream, 
                bufferSize!: Int64 = 1024,
                level!: Int64 = 6,
                memLevel!: UInt32 = DEF_MEM_LEVEL,
                strategy!: UInt32 = Z_DEFAULT_STRATEGY)
}

1.3.5 CompressInputStream类
/*
 * 类名 - CompressInputStream
 * 功能 - 压缩输入流
 */
public open class CompressInputStream  {

    /*
     * 构造函数 
     * 参数 input - 输入流
     * 参数 deflater - 压缩类Deflate
     * 参数 size - 压缩缓存大小
     * 参数 ownDeflate - 是否是同一使用者的压缩类
     * 参数 aotuOutClose - 是否默认关闭输出流
     */
    protected init(input: InputStream, deflater: Deflate, bufferSize: Int64, ownDeflate: Bool, aotuOutClose: Bool) 

    /*
     * 功能 - 设置字典, 支持deflate和zlib的字典设置, gzip不支持
     * 
     * 参数 dict - 字典数组
     * 返回值 Int32 - 成功返回Z_OK
     */
    public func setDictionary (dict: Array < UInt8 >) : Int32

    /*
     * 功能 - 从输入流中读取已经压缩的数据
     * 
     * 参数 buffer - 已经压缩的数据
     * 参数 onceInput - 是否是一次性输入
     * 返回值 Int64 - 已压缩的数据流长度
     */
    public func read (buffer: Array < Byte >, onceInput!: Bool = true) : Int64

    /*
     * 功能 - 输入流关闭
     * 
     * 返回值 Unit - Unit
     */
    public func close () : Unit

    /*
     * 功能 - 输入流结束
     * 
     * 返回值 Unit - Unit
     */
    public func finish () : Unit
    
        /*
     * 功能 - 获取压缩类
     * 
     * 返回值 Deflate - Deflate 
     */
    public open func getDeflater(): Deflate 

    /*
     * 功能 - 判断流是否关闭
     * 
     * 返回值 Bool - 关闭返回true 
     */
    public open func isClosed(): Bool

    /*
     * 功能 - 获取解压的总数据长度
     * 
     * 返回值 Int64 - 解压的总数据长度
     */
    public func getTotalIn () : Int64

    /*
     * 功能 - 获取已解压的总数据长度
     * 
     * 返回值 Int64 - 已解压的总数据长度
     */
    public func getTotalOut () : Int64

    /*
     * 功能 - 获取未解压的总数据长度
     * 
     * 返回值 Int64 - 未解压的总数据长度
     */
    public func getAvailIn () : Int64
    
    /*
     * 功能 - 获取当前输出数组的位置
     * 
     * 返回值 Int64 - 获取当前输出数组的位置
     */
    public func getPositionOut(): Int64
}

1.3.6 DeflaterInputStream类
/*
 * 类名 - DeflaterInputStream
 * 功能 - DEFLATE格式流式压缩
 */
public class DeflaterInputStream <: CompressInputStream {

    /*
     * 构造函数 
     * 参数 in_ - 输入流
     * 参数 bufferSize - 内部缓存大小
     * 参数 level - 压缩级别
     * 参数 memLevel - 内存级别
     * 参数 strategy - 压缩策略
     */
    public init (in_: InputStream, 
                bufferSize!: Int64 = 1024,
                level!: Int64 = 6,
                memLevel!: UInt32 = DEF_MEM_LEVEL,
                strategy!: UInt32 = Z_DEFAULT_STRATEGY)
}

1.3.7 GzipInputStream类
/*
 * 类名 - GzipInputStream
 * 功能 - Gzip格式流式压缩
 */
public class GzipInputStream <: CompressInputStream {
    /*
     * 构造函数 
     * 参数 in_ - 输入流
     * 参数 bufferSize - 内部缓存大小
     * 参数 level - 压缩级别
     * 参数 memLevel - 内存级别
     * 参数 strategy - 压缩策略
     */
    public init (in_: InputStream, 
                bufferSize!: Int64 = 1024,
                level!: Int64 = 6,
                memLevel!: UInt32 = DEF_MEM_LEVEL,
                strategy!: UInt32 = Z_DEFAULT_STRATEGY)
}

1.3.8 ZlibInputStream类
/*
 * 类名 - ZlibInputStream
 * 功能 - Zlib格式流式压缩
 */
public class ZlibInputStream <: CompressInputStream {

    /*
     * 构造函数 
     * 参数 in_ - 输入流
     * 参数 bufferSize - 内部缓存大小
     * 参数 level - 压缩级别
     * 参数 memLevel - 内存级别
     * 参数 strategy - 压缩策略
     */
    public init (in_: InputStream, 
                bufferSize!: Int64 = 1024,
                level!: Int64 = 6,
                memLevel!: UInt32 = DEF_MEM_LEVEL,
                strategy!: UInt32 = Z_DEFAULT_STRATEGY)
}

1.4 流式解压接口

1.4.1 InflaterInputStream类
/*
 * 类名 - InflaterInputStream
 * 功能 - DEFLATE格式的解压流
 */
public open class InflaterInputStream <: Inflater & InputStream {

    /*
     * 构造函数 
     * 参数 inputStream - 输入流
     */
    public init (inputStream: InputStream)

    /*
     * 构造函数 
     * 参数 inputStream - 输入流
     * 参数 bufferSize - 缓存大小
     */
    public init (inputStream: InputStream, bufferSize: Int64)

    /*
     * 功能 - 
     * 
     * 参数 buffer - 读取的已解压的数据流
     * 返回值 Int64 - 已解压数据流长度
     */
    public func read (buffer: Array < Byte >) : Int64

    /*
     * 功能 - 获取未读取完毕的输入流长度
     * 
     * 返回值 Int64 - 未读取完毕的输入流长度
     */
    public func getRemaining () : Int64

    /*
     * 功能 - 输入流关闭
     * 
     * 返回值 Unit - Unit
     */
    public func close () : Unit
}

1.4.2 InflaterOutputStream类
/*
 * 类名 - InflaterOutputStream
 * 功能 - DEFLATE输出流
 */
public open class InflaterOutputStream <: Resource & OutputStream {

    /*
     * 构造函数 
     * 参数 outputStream - 输出流
     */
    public init (outputStream: OutputStream)

    /*
     * 功能 - 写出数据到输出流
     * 
     * 参数 buffer - 写出需要解压的数据
     * 返回值 
     */
    public override func write (buffer: Array < Byte >)

    /*
     * 功能 - 刷新数据到输出流中
     * 
     * 返回值 Unit - Unit
     */
    public func flush () : Unit

    /*
     * 功能 - 关闭流
     * 
     * 返回值 Unit - Unit 
     */
    public open func close () : Unit

    /*
     * 功能 - 输出流是否关闭
     * 
     * 返回值 Bool - 输出流是否关闭
     */
    public open func isClosed () : Bool

    /*
     * 功能 - 获取解压的总数据长度
     * 
     * 返回值 Int64 - 解压的总数据长度
     */
    public func getTotalIn () : Int64

    /*
     * 功能 - 获取已解压的总数据长度
     * 
     * 返回值 Int64 - 已解压的总数据长度
     */
    public func getTotalOut () : Int64

    /*
     * 功能 - 获取未解压的总数据长度
     * 
     * 返回值 Int64 - 未解压的总数据长度
     */
    public func getAvailIn () : Int64

    /*
     * 功能 - 获取未解压的数组
     * 
     * 返回值 Array < Byte > - 未解压的数组
     */
    public func getAvailInArray () : Array < Byte >

    /*
     * 功能 - 获取解压类
     * 
     * 返回值 Inflate - 获取解压类 
     */
    public func getInflater () : Inflate

    /*
     * 功能 - 获取未解压的数据流长度
     * 
     * 返回值 Int64 - 未解压的数据流长度
     */
    public func getRemaining () : Int64
    
    /*
     * 功能 - 获取当前输出数组的位置
     * 
     * 返回值 Int64 - 获取当前输出数组的位置
     */
    public func getPositionOut(): Int64
}

1.4.3 UnZlibInputStream类
/*
 * 类名 - UnZlibInputStream
 * 功能 - ZLIB格式的输出流
 */
public class UnZlibInputStream <: InflaterInputStream {

    /*
     * 构造函数 
     * 参数 inputStream - 输出流
     */
    public init (inputStream: InputStream)

    /*
     * 构造函数 
     * 参数 inputStream - 输出流
     * 参数 bufferSize - 缓存大小
     */
    public init (inputStream: InputStream, bufferSize: Int64)
}

1.4.4 GunzipInputStream类
/*
 * 类名 - GunzipInputStream
 * 功能 - GZIP格式的解压输入流
 */
public class GunzipInputStream <: InflaterInputStream {

    /*
     * 构造函数 
     * 参数 inputStream - 输入流
     */
    public init (inputStream: InputStream)

    /*
     * 构造函数 
     * 参数 inputStream - 输入流
     * 参数 bufferSize - 缓存大小
     */
    public init (inputStream: InputStream, bufferSize: Int64)
}

1.4.5 UnZlibOutputStream类
/*
 * 类名 - UnZlibOutputStream
 * 功能 - ZLIB解压的输出流
 */
public class UnZlibOutputStream <: InflaterOutputStream {

    /*
     * 构造函数 
     * 参数 output - 输出流
     */
    public init (output: OutputStream)

    /*
     * 构造函数 
     * 参数 output - 输出流
     * 参数 bufferSize - 缓存大小
     */
    public init (output: OutputStream, bufferSize: Int64)
}

1.4.6 GunzipOutputStream类
/*
 * 类名 - GunzipOutputStream
 * 功能 - GZIP解压的输出流
 */
public class GunzipOutputStream <: InflaterOutputStream {

    /*
     * 构造函数 
     * 参数 output - 输出流
     */
    public init (output: OutputStream)

    /*
     * 构造函数 
     * 参数 output - 输出流
     * 参数 bufferSize - 缓存大小
     */
    public init (output: OutputStream, bufferSize: Int64)
}

1.4.7 AutoDecompressInputStream类
/*
 * 类名 - AutoDecompressInputStream
 * 功能 - 自动识别格式的解压输入流
 */
public open class AutoDecompressInputStream <: InputStream {

    /*
     * 构造函数 
     * 参数 inputStream - 输入流
     */
    public init (inputStream: InputStream)

    /*
     * 功能 - 设置字典, 支持deflate和zlib的字典设置, gzip不支持
     * 
     * 参数 dict - 设置字典
     * 返回值 Unit - Unit
     */
    public func setDictionary (dict: Array < UInt8 >) : Unit

    /*
     * 功能 - 读取已解压的数据到buffer中
     * 
     * 参数 buffer - 已解压的数据
     * 返回值 Int64 - 已解压的数据长度
     */
    public func read (buffer: Array < Byte >) : Int64

    /*
     * 功能 - 获取未解压的数据长度
     * 
     * 返回值 Int64 - 未解压的数据长度
     */
    public func getRemaining () : Int64

    /*
     * 功能 - 关闭流
     * 
     * 返回值 Unit - Unit
     */
    public func close () : Unit

    /*
     * 功能 - 获取解压的总数据长度
     * 
     * 返回值 Int64 - 获取解压的总数据长度
     */
    public func getTotalIn () : Int64

    /*
     * 功能 - 获取解压的总数据长度
     * 
     * 返回值 Int64 - 解压的总数据长度
     */
    public func getTotalOut () : Int64

    /*
     * 功能 - 获取已解压的总数据长度
     * 
     * 返回值 Array < Byte > - 已解压的总数据长度
     */
    public func getAvailInArray () : Array < Byte >

    /*
     * 功能 - 获取当前输出数组的位置
     * 
     * 返回值 Int64 - 获取当前输出数组的位置
     */
    public func getPositionOut(): Int64
    
    /*
     * 功能 - 获取解压类
     * 
     * 返回值 Inflate - 获取解压类
     */
    public func getInflater () : Inflate

    /*
     * 功能 - 是否关闭
     * 
     * 返回值 Bool - 是否关闭
     */
    public open func isClosed () : Bool
}

1.4.8 AutoDecompressOutputStream类
/*
 * 类名 - AutoDecompressOutputStream
 * 功能 - 自动识别格式的解压输入流
 */
public open class AutoDecompressOutputStream <: Resource & OutputStream {

    /*
     * 构造函数 
     * 参数 inputStream - 输入流
     */
    public init (inputStream: OutputStream)

    /*
     * 功能 - 设置字典, 支持deflate和zlib的字典设置, gzip不支持
     * 
     * 参数 dict - 设置字典
     * 返回值 Unit - Unit
     */
    public func setDictionary (dict: Array < UInt8 >) : Unit

    /*
     * 功能 - 写出解压的数据到输出流中
     * 
     * 参数 buffer - 解压的数据
     * 返回值 Unit - Unit
     */
    public func write (buffer: Array < Byte >) : Unit

    /*
     * 功能 - 获取未解压的数据长度
     * 
     * 返回值 Int64 - 未解压的数据长度
     */
    public func getRemaining () : Int64

    /*
     * 功能 - 刷出数据到输出流中
     * 
     * 返回值 Unit - Unit
     */
    public func flush () : Unit

    /*
     * 功能 - 关闭流
     * 
     * 返回值 Unit - Unit
     */
    public func close () : Unit

    /*
     * 功能 - 获取解压的总数据长度
     * 
     * 返回值 Int64 - 获取解压的总数据长度
     */
    public func getTotalIn () : Int64

    /*
     * 功能 - 获取解压的总数据长度
     * 
     * 返回值 Int64 - 解压的总数据长度
     */
    public func getTotalOut () : Int64

    /*
     * 功能 - 获取已解压的总数据长度
     * 
     * 返回值 Array < Byte > - 已解压的总数据长度
     */
    public func getAvailInArray () : Array < Byte >

    /*
     * 功能 - 获取解压类
     * 
     * 返回值 Inflate - 获取解压类
     */
    public func getInflater () : Inflate

    /*
     * 功能 - 是否关闭
     * 
     * 返回值 Bool - 是否关闭
     */
    public open func isClosed () : Bool
}

1.4.9 Inflater类
sealed abstract class Inflater <: Resource {
    /*
     * 构造函数 
     * 参数 inflate - inflate解压类
     */
    public init (inflate: Inflate)

    /*
     * 构造函数 
     * 参数 inflate - inflate解压类
     * 参数 bufsize - 缓存大小
     */
    public init (inflate: Inflate, bufsize: Int64)

    /*
     * 返回总输入数据字节数 
     * 返回值 Int64 - 返回总输入数据字节数 
     */ 
    public func getTotalIn(): Int64

    /*
     * 返回总输出数数据字节数 
     * 返回值 Int64 - 返回总输出数数据字节数 
     */ 
    public func getTotalOut(): Int64 

    /*
     * 功能 - 获取未解压的总数据长度
     * 
     * 返回值 Int64 - 未解压的总数据长度
     */
    public func getAvailIn () : Int64

    /*
     * 功能 - 获取未解压的数组
     * 
     * 返回值 Array < Byte > - 未解压的数组
     */
    public func getAvailInArray () : Array < Byte >

    /*
     * 功能 - 获取解压类
     * 
     * 返回值 Inflate - 获取解压类 
     */
    public func getInflater () : Inflate

    /*
     * 功能 - 资源关闭
     * 
     * 返回值 Unit - Unit
     */
    public func close () : Unit

    /*
     * 功能 - 资源是否关闭
     * 
     * 返回值 Bool - 输出流是否关闭
     */
    public open func isClosed () : Bool

    /*
     * 功能 - 
     * 
     * 参数 buffer - 读取的已解压的数据流
     * 返回值 Int64 - 已解压数据流长度
     */
    public func read (buffer: Array < Byte >) : Int64

    /*
     * 功能 - 获取未读取完毕的输入流长度
     * 
     * 返回值 Int64 - 未读取完毕的输入流长度
     */
    public func getRemaining () : Int64

    /*
     * 功能 - 设置字典, 支持deflate和zlib的字典设置, gzip不支持
     * 
     * 参数 dict - 字典数组
     * 返回值 Int32 - 成功返回Z_OK
     */
    public func setDictionary (dict: Array < UInt8 >) : Unit
    
    /*
     * 功能 - 获取解压时的错误码
     * 
     * 返回值 Int32 - 错误码
     */
    public func getErrorCode(): Int32 
}

1.5 全局方法

/*
 * adler32校验
 *
 * 参数 value - 初始检测值, 初始为0
 * 参数 buf - 输出缓冲 
 * 参数 start - 开始位置 
 * 参数 length - 长度 
 *
 */ 
public func adler32(check: UInt32, buf: Array<UInt8>, start: Int64, length: Int64): UInt32

/*
 * crc32校验
 *
 * 参数 value -  初始检测值, 初始为0
 * 参数 buf - 输出缓冲 
 * 参数 start - 开始位置 
 * 参数 length - 长度 
 *
 */ 
public func crc32(value: UInt32, buf: Array<UInt8>, start: Int64, length: Int64): UInt32