【发布时间】:2013-10-07 15:54:58
【问题描述】:
我正在尝试使用包“compress/gzip”压缩一段字节。我正在写入 bytes.Buffer 并且正在写入 45976 字节,当我尝试使用 gzip.reader 然后读取器功能解压缩内容时 - 我发现并非所有内容都已恢复。 bytes.buffer 有一些限制吗?这是一种绕过或改变它的方法吗?这是我的代码(编辑):
func compress_and_uncompress() {
var buf bytes.Buffer
w := gzip.NewWriter(&buf)
i,err := w.Write([]byte(long_string))
if(err!=nil){
log.Fatal(err)
}
w.Close()
b2 := make([]byte, 80000)
r, _ := gzip.NewReader(&buf)
j, err := r.Read(b2)
if(err!=nil){
log.Fatal(err)
}
r.Close()
fmt.Println("Wrote:", i, "Read:", j)
}
测试的输出(使用选定的字符串作为 long_string)会给出 写:45976,读 32768
【问题讨论】:
-
根据文档:golang.org/pkg/bytes/#Buffer,如果缓冲区无法增长,它将出现恐慌。你 100% 确定你的代码吗?
-
如果您没有提供代码示例来修复,您希望 SO 人群提供什么样的修复?
-
对此感到抱歉。我已经编辑了我的问题,还包含了一个代码 sn-p。
标签: go