Golang使⽤zlib压缩和解压缩字符串
在python的时候就习惯使⽤zlib进⾏⽹页压缩。 golang下同样使⽤zlib进⾏压缩解压缩。  zlib官⽅给出的⽅法很简单,这⾥权当⼀个补充.
zlib.NewWriter() 只能传递 []byte类型数据.  NewWriterLevel 可以传递压缩的等级.
package main
import (
"bytes"
字符串长度压缩"compress/zlib"
"fmt"
"io"
)
func main() {
var in bytes.Buffer
b := []byte(``)
w := zlib.NewWriter(&in)
w.Write(b)
w.Close()
var out bytes.Buffer
r, _ := zlib.NewReader(&in)
io.Copy(&out, r)
fmt.Println(out.String())
}
库包地址
import "compress/zlib"
写⼊
func NewWriter
func NewWriter(w io.Writer) *Writer
读取压缩的数据
func NewReader
func NewReader(r io.Reader) (io.ReadCloser, error)
设置压缩等级,并压缩数据
func NewWriterLevel(w io.Writer, level int) (io.WriteCloser, os.Error)
下⾯是⼏个级别.
const (
NoCompression = 0
BestSpeed  = 1
BestCompression  = 9
DefaultCompression = -1
)
const (
NoCompression  = flate.NoCompression
BestSpeed    = flate.BestSpeed
BestCompression  = flate.BestCompression
DefaultCompression = flate.DefaultCompression
)
写⼊数据
func (*Writer) Write
func (z *Writer) Write(p []byte) (n int, err error)
关闭
func (*Writer) Close
func (z *Writer) Close() error
Golang zlib压缩的效率和性能都还可以, 毕竟rsync也在⽤这个压缩算法。其实zlib和gzip对⽐,貌似⽤gzip的多⼀点。⽐如nginx的gzip压缩. 以前看过国外⼀个帖⼦,是说zlib⽐gzip更适合那种速度跟压缩效果均衡的场景。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。