Spec-Zone.ru › Go

Пакет zlib

  • import "compress/zlib"
  • Обзор
  • Индекс
  • Примеры

Обзор

Пакет zlib реализует чтение и запись сжатых данных в формате zlib в соответствии со спецификацией RFC 1950.

Реализация предоставляет фильтры, которые распаковывают данные во время чтения и сжимают во время записи. Например, для записи сжатых данных в буфер:

var b bytes.Buffer
w := zlib.NewWriter(&b)
w.Write([]byte("hello, world\n"))
w.Close()

и для обратного чтения этих данных:

r, err := zlib.NewReader(&b)
io.Copy(os.Stdout, r)
r.Close()

Индекс

  • Константы
  • Переменные
  • func NewReader(r io.Reader) (io.ReadCloser, error)
  • func NewReaderDict(r io.Reader, dict []byte) (io.ReadCloser, error)
  • type Resetter
  • type Writer
  • func NewWriter(w io.Writer) *Writer
  • func NewWriterLevel(w io.Writer, level int) (*Writer, error)
  • func NewWriterLevelDict(w io.Writer, level int, dict []byte) (*Writer, error)
  • func (z *Writer) Close() error
  • func (z *Writer) Flush() error
  • func (z *Writer) Reset(w io.Writer)
  • func (z *Writer) Write(p []byte) (n int, err error)

Примеры

NewReader
NewWriter

Файлы пакета

reader.go writer.go

Константы

Эти константы скопированы из пакета flate, чтобы коду, импортирующему compress/zlib, не требовалось также импортировать compress/flate.

const (
    NoCompression      = flate.NoCompression
    BestSpeed          = flate.BestSpeed
    BestCompression    = flate.BestCompression
    DefaultCompression = flate.DefaultCompression
    HuffmanOnly        = flate.HuffmanOnly
)

Переменные

var (
    // ErrChecksum is returned when reading ZLIB data that has an invalid checksum.
    ErrChecksum = errors.New("zlib: invalid checksum")
    // ErrDictionary is returned when reading ZLIB data that has an invalid dictionary.
    ErrDictionary = errors.New("zlib: invalid dictionary")
    // ErrHeader is returned when reading ZLIB data that has an invalid header.
    ErrHeader = errors.New("zlib: invalid header")
)

func NewReader

func NewReader(r io.Reader) (io.ReadCloser, error)

NewReader создает новый ReadCloser. Операции чтения из возвращенного ReadCloser считывают и распаковывают данные из r. Если r не реализует io.ByteReader, распаковщик может прочитать из r больше данных, чем необходимо. Вызывающая сторона обязана вызвать Close для ReadCloser по завершении работы.

Интерфейс io.ReadCloser, возвращаемый функцией NewReader, также реализует Resetter.

Пример

Код:

buff := []byte{120, 156, 0, 13, 0, 242, 255, 104, 101, 108, 108, 111,
    44, 32, 119, 111, 114, 108, 100, 10, 3, 0, 33, 231, 4, 147}
b := bytes.NewReader(buff)

r, err := zlib.NewReader(b)
if err != nil {
    panic(err)
}
io.Copy(os.Stdout, r)
r.Close()

Вывод:

hello, world

func NewReaderDict

func NewReaderDict(r io.Reader, dict []byte) (io.ReadCloser, error)

NewReaderDict аналогичен NewReader, но использует предустановленный словарь. NewReaderDict игнорирует словарь, если сжатые данные на него не ссылаются. Если сжатые данные ссылаются на другой словарь, NewReaderDict возвращает ErrDictionary.

ReadCloser, возвращаемый функцией NewReaderDict, также реализует Resetter.

type Resetter 1.4

Resetter сбрасывает ReadCloser, возвращенный функциями NewReader или NewReaderDict, для переключения на новый базовый Reader. Это позволяет повторно использовать ReadCloser вместо выделения нового.

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
}

type Writer

Writer принимает записываемые в него данные и записывает их сжатую форму в базовый writer (см. NewWriter).

type Writer struct {
    // contains filtered or unexported fields
}

func NewWriter

func NewWriter(w io.Writer) *Writer

NewWriter создает новый Writer. Данные, записываемые в возвращенный Writer, сжимаются и записываются в w.

Вызывающая сторона обязана вызвать Close для Writer по завершении работы. Операции записи могут буферизоваться и не сбрасываться до вызова Close.

Обратите внимание, что точные байты, записанные в w, не подпадают под гарантию совместимости Go 1. Вызывающие стороны, включая тесты, не должны полагаться на точную последовательность записанных байтов.

Пример

Код:

var b bytes.Buffer

w := zlib.NewWriter(&b)
w.Write([]byte("hello, world\n"))
w.Close()
fmt.Println(b.Bytes())

Вывод:

[120 156 0 13 0 242 255 104 101 108 108 111 44 32 119 111 114 108 100 10 3 0 33 231 4 147]

func NewWriterLevel

func NewWriterLevel(w io.Writer, level int) (*Writer, error)

NewWriterLevel аналогичен NewWriter, но указывает уровень сжатия вместо использования DefaultCompression по умолчанию.

Уровень сжатия может быть DefaultCompression, NoCompression, HuffmanOnly или любым целочисленным значением в диапазоне от BestSpeed до BestCompression включительно. Возвращаемая ошибка будет nil, если уровень допустим.

Обратите внимание, что точные байты, записанные в w, не подпадают под гарантию совместимости Go 1. Вызывающие стороны, включая тесты, не должны полагаться на точную последовательность записанных байтов.

func NewWriterLevelDict

func NewWriterLevelDict(w io.Writer, level int, dict []byte) (*Writer, error)

NewWriterLevelDict аналогичен NewWriterLevel, но задает словарь для сжатия.

Словарь может быть nil. Если нет, его содержимое не должно изменяться до закрытия Writer.

Обратите внимание, что точные байты, записанные в w, не подпадают под гарантию совместимости Go 1. Вызывающие стороны, включая тесты, не должны полагаться на точную последовательность записанных байтов.

func (*Writer) Close

func (z *Writer) Close() error

Close закрывает Writer, сбрасывая все незаписанные данные в базовый io.Writer, но не закрывает сам базовый io.Writer.

func (*Writer) Flush

func (z *Writer) Flush() error

Flush сбрасывает буферизованные данные Writer в базовый io.Writer.

func (*Writer) Reset 1.2

func (z *Writer) Reset(w io.Writer)

Reset сбрасывает состояние Writer z так, что оно становится эквивалентно его начальному состоянию из NewWriterLevel или NewWriterLevelDict, но с записью в w.

func (*Writer) Write

func (z *Writer) Write(p []byte) (n int, err error)

Write записывает сжатую форму p в базовый io.Writer. Сжатые байты не обязательно сбрасываются до тех пор, пока Writer не будет закрыт или сброшен явно.

© Google, Inc.
Licensed under the Creative Commons Attribution License 3.0.
http://golang.org/pkg/compress/zlib/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API