github.com/whatap/golib@v0.0.22/util/compressutil/CompressUtil.go (about)

     1  package compressutil
     2  
     3  import (
     4  	"bytes"
     5  	"compress/gzip"
     6  	"fmt"
     7  	"io/ioutil"
     8  )
     9  
    10  func DoZip(in []byte) (output []byte, err error) {
    11  	if in == nil {
    12  		err = fmt.Errorf("error input data is nil ")
    13  		return
    14  	}
    15  	buf := new(bytes.Buffer)
    16  
    17  	gz := gzip.NewWriter(buf)
    18  	gz.Write(in)
    19  	gz.Flush()
    20  
    21  	// gz.Close 가 호출 되어야만 buf.Bytes 내용이 정상 출력 됨
    22  	err = gz.Close()
    23  	if err == nil {
    24  		output = buf.Bytes()
    25  	}
    26  	return
    27  }
    28  
    29  func UnZip(in []byte) ([]byte, error) {
    30  	r, err := gzip.NewReader(ioutil.NopCloser(bytes.NewBuffer(in)))
    31  	if err != nil {
    32  		return make([]byte, 0), err
    33  	}
    34  	defer r.Close()
    35  	if b, err := ioutil.ReadAll(r); err != nil {
    36  		return make([]byte, 0), err
    37  	} else {
    38  		return b, nil
    39  	}
    40  }