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、NoCompression、HuffmanOnly、BestSpeedからBestCompressionまでの 任意の整数値であることができます。レベルが有効である場合、返されるエラーはnilになります。
func NewWriterLevelDict ¶
NewWriterLevelDictは、NewWriterLevelと同様ですが、圧縮に使用する辞書を指定します。
辞書はnilである場合があります。そうでない場合、その内容はWriterが閉じられるまで変更されないようにする必要があります。