49 lines
859 B
Go
49 lines
859 B
Go
package zlibUtil
|
||
|
||
import (
|
||
"bytes"
|
||
"compress/zlib"
|
||
"io"
|
||
)
|
||
|
||
// 压缩
|
||
// in:待压缩数据
|
||
// level:压缩等级
|
||
// 返回值:
|
||
// 压缩后数据
|
||
// 对应的错误
|
||
func Compress(data []byte, level int) ([]byte, error) {
|
||
var buffer bytes.Buffer
|
||
compressor, err := zlib.NewWriterLevelDict(&buffer, level, nil)
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
|
||
compressor.Write(data)
|
||
compressor.Close()
|
||
|
||
return buffer.Bytes(), nil
|
||
}
|
||
|
||
// 解压缩
|
||
// in:待解压缩数据
|
||
// 返回值:
|
||
// 解压缩后数据
|
||
// 对应的错误
|
||
func Decompress(data []byte) ([]byte, error) {
|
||
dataReader := bytes.NewReader(data)
|
||
zlibReader, err := zlib.NewReader(dataReader)
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
defer zlibReader.Close()
|
||
|
||
var buffer bytes.Buffer
|
||
_, err = io.Copy(&buffer, zlibReader)
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
|
||
return buffer.Bytes(), nil
|
||
}
|