这就是我使用gzip writer的方式.
var b bytes.Buffer
gz := gzip.NewWriter(&b)
if _, err := gz.Write([]byte(data)); err != nil {
panic(err)
}
/*
if err := gz.Flush(); err != nil {
panic(err)
}
*/
if err := gz.Close(); err != nil {
panic(err)
}
Run Code Online (Sandbox Code Playgroud)
游乐场链接https://play.golang.org/p/oafHItGOlDN
很明显,Flush + Close
只是Close
给出了不同的结果.
该compress/gzip
软件包的文件说:
func(z*Writer)Close()错误
Close通过将任何未写入的数据刷新到底层的io.Writer并写入GZIP页脚来关闭Writer.它不会关闭底层的io.Writer.
这个医生在谈论什么潮红?Flush
如果Close
足够的话,为什么你需要功能呢?为什么不Close
打电话Flush
?
关闭确实会引发冲洗.当你调用Flush
然后Close
,流被刷新两次,这导致输出一个额外的块,它使用5个字节来编码0字节的数据.两个流都编码相同的数据,但其中一个是浪费的.
至于为何使用Flush,解释就在Flush的文档中.有时您没有完成写作,但是您需要确保在其他数据可用之前,客户端可以读取您此时编写的所有数据.在这些点,您刷新流.只有在没有更多数据时才会关闭.
归档时间: |
|
查看次数: |
320 次 |
最近记录: |