import "compress/zlib"

RFC 1950で定義されているzlib形式圧縮ファイルの読み書きを実装しています。

読み込み時に解凍し、書き込み時に圧縮を行うフィルターを提供します。次の例ではバッファに圧縮データを書き込みます。

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

次に、それを読み戻します。

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

パッケージファイル

reader.go writer.go

定数

これら定数はflateパッケージからコピーされているため、 “compress/zlib”をインポートしているコードでは”compress/flate”をインポートする必要はありません。

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

変数

var ChecksumError os.Error = os.ErrorString("zlib checksum error")
var HeaderError os.Error = os.ErrorString("invalid zlib header")
var UnsupportedError os.Error = os.ErrorString("unsupported zlib format")

NewReader関数

func NewReader(r io.Reader) (io.ReadCloser, os.Error)

NewReaderは、rからデータを解凍しながら読み込みを行う新しいio.ReadCloserを作成します。実装しているバッファはrから必要 以上のデータを読み込む可能性があります。使い終わったら呼び出し側の責任でReadCloserのCloseを呼び出してください。

NewWriter関数

func NewWriter(w io.Writer) (io.WriteCloser, os.Error)

NewWriterは、デフォルトの圧縮レベルでNewWriterLevelを呼びます。

NewWriterLevel関数

func NewWriterLevel(w io.Writer, level int) (io.WriteCloser, os.Error)

NewWriterLevelは、圧縮データをwへ書き込む新しいio.WriteCloserを作成します。使い終わったら呼び出し側の責任で WriteCloserのCloseを呼び出してください。levelは圧縮レベルで、DefaultCompression(デフォルト圧縮)、 NoCompression(圧縮無し)、またはBestSpeed(速度最優先)からBestCompression(圧縮率最優先)の整数値を指定す ることが可能です。

バグ

zlibパッケージにはFDICTフラグは実装されていません。