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