github.com/keysonzzz/kmg@v0.0.0-20151121023212-05317bfd7d39/kmgCompress/zlib.go (about)

     1  package kmgCompress
     2  
     3  import (
     4  	"bytes"
     5  	"compress/zlib"
     6  	"io/ioutil"
     7  )
     8  
     9  // 正常使用应该不会报错.
    10  func ZlibMustCompress(inb []byte) (outb []byte) {
    11  	buf := &bytes.Buffer{}
    12  	w := zlib.NewWriter(buf)
    13  	_, err := w.Write(inb)
    14  	if err != nil {
    15  		w.Close()
    16  		panic(err)
    17  	}
    18  	err = w.Close()
    19  	if err != nil {
    20  		panic(err)
    21  	}
    22  	return buf.Bytes()
    23  }
    24  
    25  func ZlibMustUnCompress(inb []byte) (outb []byte) {
    26  	buf := bytes.NewBuffer(inb)
    27  	reader, err := zlib.NewReader(buf)
    28  	if err != nil {
    29  		panic(err)
    30  	}
    31  	outb, err = ioutil.ReadAll(reader)
    32  	if err != nil {
    33  		reader.Close()
    34  		panic(err)
    35  	}
    36  	err = reader.Close()
    37  	if err != nil {
    38  		panic(err)
    39  	}
    40  	return outb
    41  }
    42  
    43  func ZlibUnCompress(inb []byte) (outb []byte, err error) {
    44  	buf := bytes.NewBuffer(inb)
    45  	reader, err := zlib.NewReader(buf)
    46  	if err != nil {
    47  		return nil, err
    48  	}
    49  	outb, err = ioutil.ReadAll(reader)
    50  	if err != nil {
    51  		reader.Close()
    52  		return nil, err
    53  	}
    54  	err = reader.Close()
    55  	if err != nil {
    56  		panic(err)
    57  	}
    58  	return outb, nil
    59  }