zlib

package
v1.25.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 5, 2025 License: MIT Imports: 4 Imported by: 0

Documentation

Overview

zlibパッケージは、RFC 1950で指定されているように、zlib形式の圧縮データの読み書きを実装します。

この実装は、読み取り中に解凍するフィルターと、書き込み中に圧縮するフィルターを提供します。 たとえば、圧縮されたデータをバッファに書き込むには:

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()

Index

Examples

Constants

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

これらの定数は flate パッケージからコピーされており、 compress/zlib をインポートするコードが compress/flate もインポートする必要がないようになっています。

Variables

View Source
var (
	// ErrChecksumは、無効なチェックサムを持つZLIBデータを読み取る場合に返されます。
	ErrChecksum = errors.New("zlib: invalid checksum")
	// ErrDictionaryは、無効な辞書を持つZLIBデータを読み取る場合に返されます。
	ErrDictionary = errors.New("zlib: invalid dictionary")
	// ErrHeaderは、無効なヘッダーを持つZLIBデータを読み取る場合に返されます。
	ErrHeader = errors.New("zlib: invalid header")
)

Functions

func NewReader

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

NewReader creates a new ReadCloser. Reads from the returned ReadCloser read and decompress data from r. If r does not 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 done.

The io.ReadCloser returned by NewReader also implements Resetter.

Example
package main

import (
	"github.com/shogo82148/std/bytes"
	"github.com/shogo82148/std/compress/zlib"
	"github.com/shogo82148/std/io"
	"github.com/shogo82148/std/os"
)

func main() {
	buff := []byte{120, 156, 202, 72, 205, 201, 201, 215, 81, 40, 207,
		47, 202, 73, 225, 2, 4, 0, 0, 255, 255, 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()
}
Output:
hello, world

func NewReaderDict

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

NewReaderDict is like NewReader but uses a preset dictionary. NewReaderDict ignores the dictionary if the compressed data does not refer to it. If the compressed data refers to a different dictionary, NewReaderDict returns ErrDictionary.

The ReadCloser returned by NewReaderDict also implements Resetter.

Types

type Resetter added in v1.4.0

type Resetter interface {
	Reset(r io.Reader, dict []byte) error
}

Resetter resets a ReadCloser returned by NewReader or NewReaderDict to switch to a new underlying Reader. This permits reusing a ReadCloser instead of allocating a new one.

type Writer

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

Writerは書き込まれたデータを受け取り、そのデータの圧縮された形式を 基になるライターに書き込みます(NewWriter を参照)。

func NewWriter

func NewWriter(w io.Writer) *Writer

NewWriterは新しい Writer を作成します。 返されたWriterへの書き込みは圧縮されてwに書き込まれます。

Writerを使用し終わったら、呼び出し元がCloseを呼び出す責任があります。 書き込みはバッファリングされ、Closeが呼び出されるまでフラッシュされない場合があります。

Example
package main

import (
	"github.com/shogo82148/std/bytes"
	"github.com/shogo82148/std/compress/zlib"
	"github.com/shogo82148/std/fmt"
)

func main() {
	var b bytes.Buffer

	w := zlib.NewWriter(&b)
	w.Write([]byte("hello, world\n"))
	w.Close()
	fmt.Println(b.Bytes())
}
Output:
[120 156 202 72 205 201 201 215 81 40 207 47 202 73 225 2 4 0 0 255 255 33 231 4 147]

func NewWriterLevel

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

NewWriterLevelは NewWriter と同様ですが、DefaultCompression を仮定する代わりに 圧縮レベルを指定します。

圧縮レベルは、DefaultCompressionNoCompressionHuffmanOnly または BestSpeed から BestCompression までの整数値のいずれかを指定できます。 レベルが有効である場合、返されるエラーはnilになります。

func NewWriterLevelDict

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

NewWriterLevelDictは NewWriterLevel と同様ですが、圧縮に使用する辞書を 指定します。

辞書はnilである場合があります。そうでない場合、その内容はWriterが閉じられるまで変更されないようにする必要があります。

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 added in v1.2.0

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 が閉じられるか 明示的にフラッシュされるまで必ずしもフラッシュされません。

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL