2 回答

TA貢獻(xiàn)1831條經(jīng)驗(yàn) 獲得超4個(gè)贊
我相信您應(yīng)該在從底層緩沖區(qū)獲取字節(jié)之前關(guān)閉 gzip 編寫(xiě)器。
func (f *File) Zip() error {
buff := bytes.NewBuffer(nil)
writer := gzip.NewWriter(buff)
defer writer.Close()
_, err := f.Body.WriteTo(writer)
if err != nil {
return err
}
writer.Close() // I have added this line
f.Body = bytes.NewReader(buff.Bytes())
f.Name = fmt.Sprintf("%s.gz", f.Name)
return nil
}

TA貢獻(xiàn)1943條經(jīng)驗(yàn) 獲得超7個(gè)贊
根據(jù)文檔,gzip.NewReader
_If r does not also implement io.ByteReader, the decompressor may read more data than necessary from r.
對(duì)于 bytes.Reader,A Reader implements the io.Reader, io.ReaderAt, io.WriterTo, io.Seeker, io.ByteScanner, and io.RuneScanner interfaces by reading from a byte slice.
問(wèn)題可能在于bytes.Reader
沒(méi)有實(shí)現(xiàn)io.ByteReader
。
- 2 回答
- 0 關(guān)注
- 184 瀏覽
添加回答
舉報(bào)