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 }