41 lines
848 B
Go
41 lines
848 B
Go
package compress
|
||
|
||
import (
|
||
"bytes"
|
||
"compress/gzip"
|
||
"io"
|
||
)
|
||
|
||
// GZipCompress 对数据进行GZip压缩,返回bytes.Buffer和错误信息
|
||
func GZipCompress(data []byte) (bytes.Buffer, error) {
|
||
var buf bytes.Buffer
|
||
gzipWriter := gzip.NewWriter(&buf)
|
||
_, err := gzipWriter.Write(data)
|
||
if err != nil {
|
||
return buf, err
|
||
}
|
||
if err := gzipWriter.Close(); err != nil {
|
||
return buf, err
|
||
}
|
||
return buf, nil
|
||
}
|
||
|
||
// GZipUnCompress 对已进行GZip压缩的数据进行解压缩,返回字节数组及错误信息
|
||
func GZipUnCompress(dataByte []byte) ([]byte, error) {
|
||
data := *bytes.NewBuffer(dataByte)
|
||
gzipReader, err := gzip.NewReader(&data)
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
result, err := io.ReadAll(gzipReader)
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
|
||
if err := gzipReader.Close(); err != nil {
|
||
return nil, err
|
||
}
|
||
|
||
return result, nil
|
||
}
|