zlib

package
v1.22.0 Latest Latest
Warning

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

Go to latest
Published: Feb 26, 2024 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、NoCompression、HuffmanOnly、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