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 ¶
const ( NoCompression = flate.NoCompression BestSpeed = flate.BestSpeed BestCompression = flate.BestCompression DefaultCompression = flate.DefaultCompression HuffmanOnly = flate.HuffmanOnly )
これらの定数は flate パッケージからコピーされており、 compress/zlib をインポートするコードが compress/flate もインポートする必要がないようになっています。
Variables ¶
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 ¶
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
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 ¶
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 ¶
NewWriterLevelは NewWriter と同様ですが、DefaultCompression を仮定する代わりに 圧縮レベルを指定します。
圧縮レベルは、DefaultCompression、NoCompression、HuffmanOnly または BestSpeed から BestCompression までの整数値のいずれかを指定できます。 レベルが有効である場合、返されるエラーはnilになります。
func NewWriterLevelDict ¶
NewWriterLevelDictは NewWriterLevel と同様ですが、圧縮に使用する辞書を 指定します。
辞書はnilである場合があります。そうでない場合、その内容はWriterが閉じられるまで変更されないようにする必要があります。
func (*Writer) Close ¶
Closeは、Writerを閉じ、書き込まれていないデータを基になる io.Writer にフラッシュしますが、 基になる io.Writer を閉じません。
func (*Writer) Reset ¶ added in v1.2.0
Resetは[Writer] zの状態をクリアし、NewWriterLevel または NewWriterLevelDict からの 初期状態と同等にしますが、代わりにwに書き込みます。