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 }