package flate
import "compress/flate"
flate包实现了deflate压缩数据格式,参见RFC 1951。gzip包和zlib包实现了对基于deflate的文件格式的访问。
Index
- Constants
- type CorruptInputError
- func (e CorruptInputError) Error() string
- type InternalError
- func (e InternalError) Error() string
- type ReadError
- func (e *ReadError) Error() string
- type WriteError
- func (e *WriteError) Error() string
- type Reader
- func NewReader(r io.Reader) io.ReadCloser
- func NewReaderDict(r io.Reader, dict []byte) io.ReadCloser
- type Writer
- func NewWriter(w io.Writer, level int) (*Writer, error)
- func NewWriterDict(w io.Writer, level int, dict []byte) (*Writer, error)
- func (w *Writer) Reset(dst io.Writer)
- func (w *Writer) Write(data []byte) (n int, err error)
- func (w *Writer) Flush() error
- func (w *Writer) Close() error
Constants
const (
NoCompression = 0
BestSpeed = 1
BestCompression = 9
DefaultCompression = -1
)
type CorruptInputError
type CorruptInputError int64
CorruptInputError表示在输入的指定偏移量位置存在损坏。
func (CorruptInputError) Error
func (e CorruptInputError) Error() string
type InternalError
type InternalError string
InternalError表示flate数据自身的错误。
func (InternalError) Error
func (e InternalError) Error() string
type ReadError
type ReadError struct {
Offset int64 // 错误出现的位置(字节偏移量)
Err error // 下层的读取操作返回的错误
}
ReadError代表在读取输入流时遇到的错误。
func (*ReadError) Error
func (e *ReadError) Error() string
type WriteError
type WriteError struct {
Offset int64 // 错误出现的位置(字节偏移量)
Err error // 下层的写入操作返回的错误
}
WriteError代表在写入输出流时遇到的错误。
func (*WriteError) Error
func (e *WriteError) Error() string
type Reader
type Reader interface {
io.Reader
io.ByteReader
}
NewReader真正需要的接口。如果提供的Io.Reader没有提供ReadByte方法,NewReader函数会自行添加缓冲。
func NewReader
func NewReader(r io.Reader) io.ReadCloser
NewReader返回一个从r读取并解压数据的io.ReadCloser。调用者有责任在读取完毕后调用返回值的Close方法。
func NewReaderDict
func NewReaderDict(r io.Reader, dict []byte) io.ReadCloser
NewReaderDict类似NewReader,但会使用预设的字典初始化返回的Reader。
返回的Reader表现的好像原始未压缩的数据流以该字典起始(并已经被读取)。NewReaderDict用于读取NewWriterDict压缩的数据。
type Writer
type Writer struct {
// 内含隐藏或非导出字段
}
Writer将提供给它的数据压缩后写入下层的io.Writer接口。
func NewWriter
func NewWriter(w io.Writer, level int) (*Writer, error)
NewWriter返回一个压缩水平为level的Writer。
和zlib包一样,level的范围是1(BestSpeed)到9 (BestCompression)。值越大,压缩效果越好,但也越慢;level为0表示不尝试做任何压缩,只添加必需的deflate框架;level为-1时会使用默认的压缩水平;如果level在[-1, 9]范围内,error返回值将是nil,否则将返回非nil的错误值。
func NewWriterDict
func NewWriterDict(w io.Writer, level int, dict []byte) (*Writer, error)
NewWriterDict类似NewWriter,但会使用预设的字典初始化返回的Writer。
返回的Writer表现的好像已经将原始、未压缩数据dict(压缩后未产生任何数据的)写入w了,使用w压缩的数据只能被使用同样的字典初始化生成的Reader接口解压缩。(类似加解密的初始向量/密钥)
func (*Writer) Reset
func (w *Writer) Reset(dst io.Writer)
Reset将w重置,丢弃当前的写入状态,并将下层输出目标设为dst。效果上等价于将w设为使用dst和w的压缩水平、字典重新调用NewWriter或NewWriterDict返回的*Writer。
func (*Writer) Write
func (w *Writer) Write(data []byte) (n int, err error)
Write向w写入数据,最终会将压缩后的数据写入下层io.Writer接口。
func (*Writer) Flush
func (w *Writer) Flush() error
Flush将缓冲中的压缩数据刷新到下层io.Writer接口中。
本方法主要用在传输压缩数据的网络连接中,以保证远端的接收者可以获得足够的数据来重构数据报。Flush会阻塞直到所有缓冲中的数据都写入下层io.Writer接口后才返回。如果下层的io.Writetr接口返回一个错误,Flush也会返回该错误。在zlib包的术语中,Flush方法等价于Z_SYNC_FLUSH。
func (*Writer) Close
func (w *Writer) Close() error
Close刷新缓冲并关闭w。