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
|
|||
|
|
}
|