Documentation ¶
Overview ¶
Package flate implements the DEFLATE compressed data format, described in RFC 1951. The gzip and zlib packages implement access to DEFLATE-based file formats.
Index ¶
Constants ¶
const ( NoCompression = 0 BestSpeed = 1 BestCompression = 9 DefaultCompression = -1 )
const ( MaxHist = 32768 // max history required // The next three numbers come from the RFC, section 3.2.7. MaxLit = 286 MaxDist = 32 NumCodes = 19 // number of codes in Huffman meta-code )
Variables ¶
This section is empty.
Functions ¶
func NewReader ¶
func NewReader(r io.Reader) io.ReadCloser
NewReader returns a new ReadCloser that can be used to read the uncompressed version of r. If r does not also implement io.ByteReader, the decompressor may read more data than necessary from r. It is the caller's responsibility to call Close on the ReadCloser when finished reading.
The ReadCloser returned by NewReader also implements Resetter.
func NewReaderDict ¶
func NewReaderDict(r io.Reader, dict []byte) io.ReadCloser
NewReaderDict is like NewReader but initializes the reader with a preset dictionary. The returned Reader behaves as if the uncompressed data stream started with the given dictionary, which has already been read. NewReaderDict is typically used to read data compressed by NewWriterDict.
The ReadCloser returned by NewReader also implements Resetter.
Types ¶
type CorruptInputError ¶
type CorruptInputError int64
A CorruptInputError reports the presence of corrupt input at a given offset.
func (CorruptInputError) Error ¶
func (e CorruptInputError) Error() string
type Decompressor ¶
type Decompressor struct { // Input source. R Reader Roffset int64 Woffset int64 // Input bits, in top of b. B uint32 Nb uint // Huffman decoders for literal/length, distance. H1, H2 HuffmanDecoder // Length arrays used to define Huffman codes. Bits *[MaxLit + MaxDist]int Codebits *[NumCodes]int // Output history, buffer. Hist *[MaxHist]byte Hp int // current output position in buffer Hw int // have written hist[0:hw] already Hfull bool // buffer has filled at least once // Temporary buffer (avoids repeated allocation). Buf [4]byte // Next step in the decompression, // and decompression state. Step func(*Decompressor) Final bool Err error ToRead []byte Hl, Hd *HuffmanDecoder CopyLen int CopyDist int }
Decompress state.
func (*Decompressor) Close ¶
func (f *Decompressor) Close() error
type HuffmanDecoder ¶
type InternalError ¶
type InternalError string
An InternalError reports an error in the flate code itself.
func (InternalError) Error ¶
func (e InternalError) Error() string
type ReadError ¶
type ReadError struct { Offset int64 // byte offset where error occurred Err error // error returned by underlying Read }
A ReadError reports an error encountered while reading input.
type Reader ¶
type Reader interface { io.Reader io.ByteReader }
The actual read interface needed by NewReader. If the passed in io.Reader does not also have ReadByte, the NewReader will introduce its own buffering.
type Resetter ¶
type Resetter interface { // Reset discards any buffered data and resets the Resetter as if it was // newly initialized with the given reader. Reset(r io.Reader, dict []byte) error }
Resetter resets a ReadCloser returned by NewReader or NewReaderDict to to switch to a new underlying Reader. This permits reusing a ReadCloser instead of allocating a new one.
type WriteError ¶
type WriteError struct { Offset int64 // byte offset where error occurred Err error // error returned by underlying Write }
A WriteError reports an error encountered while writing output.
func (*WriteError) Error ¶
func (e *WriteError) Error() string
type Writer ¶
type Writer struct {
// contains filtered or unexported fields
}
A Writer takes data written to it and writes the compressed form of that data to an underlying writer (see NewWriter).
func NewWriter ¶
NewWriter returns a new Writer compressing data at the given level. Following zlib, levels range from 1 (BestSpeed) to 9 (BestCompression); higher levels typically run slower but compress more. Level 0 (NoCompression) does not attempt any compression; it only adds the necessary DEFLATE framing. Level -1 (DefaultCompression) uses the default compression level.
If level is in the range [-1, 9] then the error returned will be nil. Otherwise the error returned will be non-nil.
func NewWriterDict ¶
NewWriterDict is like NewWriter but initializes the new Writer with a preset dictionary. The returned Writer behaves as if the dictionary had been written to it without producing any compressed output. The compressed data written to w can only be decompressed by a Reader initialized with the same dictionary.
func (*Writer) Flush ¶
Flush flushes any pending compressed data to the underlying writer. It is useful mainly in compressed network protocols, to ensure that a remote reader has enough data to reconstruct a packet. Flush does not return until the data has been written. If the underlying writer returns an error, Flush returns that error.
In the terminology of the zlib library, Flush is equivalent to Z_SYNC_FLUSH.