Golang使用zlib压缩和解压缩字符串
在python的时候就习惯使用zlib进行网页压缩。golang下同样使用zlib进行压缩解压缩。 zlib官方给出的方法很简单,这里权当一个补充.
zlib.NewWriter()只能传递[]byte类型数据. NewWriterLevel可以传递压缩的等级.
packagemain import( "bytes" "compress/zlib" "fmt" "io" ) funcmain(){ varinbytes.Buffer b:=[]byte(`xiorui.cc`) w:=zlib.NewWriter(&in) w.Write(b) w.Close() varoutbytes.Buffer r,_:=zlib.NewReader(&in) io.Copy(&out,r) fmt.Println(out.String()) }
库包地址
import"compress/zlib"
写入
funcNewWriter funcNewWriter(wio.Writer)*Writer
读取压缩的数据
funcNewReader funcNewReader(rio.Reader)(io.ReadCloser,error)
设置压缩等级,并压缩数据
funcNewWriterLevel(wio.Writer,levelint)(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)(nint,errerror)
关闭
func(*Writer)Close func(z*Writer)Close()error
Golangzlib压缩的效率和性能都还可以,毕竟rsync也在用这个压缩算法。 其实zlib和gzip对比,貌似用gzip的多一点。比如nginx的gzip压缩.以前看过国外一个帖子,是说zlib比gzip更适合那种速度跟压缩效果均衡的场景。