gpt4 book ai didi

go - 在 Golang 中遇到 gzip.Reader 问题

转载 作者:IT王子 更新时间:2023-10-29 01:24:38 25 4
gpt4 key购买 nike

为什么这行不通? (抱歉,由于某种原因我无法在 Go Playground 上获得分享按钮)。

package main

import (
"bytes"
"compress/gzip"
"fmt"
"io"
)

func main() {
// ENCODE
data := []byte{1, 2, 3, 4, 5, 6, 7}
bb0 := bytes.NewBuffer(data)
byts := bb0.Bytes()
fmt.Printf("data = % x\n", data)
fmt.Printf("byte buffer bb0 contains = % x\n", byts)
bb1 := new(bytes.Buffer)
w := gzip.NewWriter(bb1)
s1, err := w.Write(byts)
fmt.Printf("%d bytes written using gzip writer, err = %v\n", s1, err)
byts = bb1.Bytes()
fmt.Printf("byte buffer bb1 contains = % x\n", byts)
// DECODE
r, err := gzip.NewReader(bb1)
bb2 := new(bytes.Buffer)
s2, err := io.Copy(bb2, r)
r.Close()
fmt.Printf("%d bytes copied from gzip reader, err = %v\n", s2, err)
byts = bb2.Bytes()
fmt.Printf("byte buffer bb2 contains = % x\n", byts)
}

我得到的结果

data = 01 02 03 04 05 06 07
byte buffer bb0 contains = 01 02 03 04 05 06 07
7 bytes written using gzip writer, err = <nil>
byte buffer bb1 contains = 1f 8b 08 00 00 09 6e 88 00 ff
0 bytes copied from gzip reader, err = unexpected EOF
byte buffer bb2 contains =

读者似乎什么都没做,我做错了什么?

最佳答案

可能它不起作用,因为您没有关闭 gzip writer,因此 gzip 数据从未刷新到底层 writer(您正在为其使用 bytes.Buffer),或者至少它没有最终确定.

您需要在写入后w.Close() gzip writer。

或者,可能是在尝试从中读取 bytes.Buffer 之前需要将其归零,因为读取器可能正在尝试从其末尾读取。

此外,您的操作效率低下,我建议您使用:https://github.com/AlasdairF/Custom

关于go - 在 Golang 中遇到 gzip.Reader 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34284001/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com