Golang笔记

golang flate/zlib 解压缩

golang flate/zlib 解压缩

package main

import (
	"bytes"
	"compress/flate"
	"compress/zlib"
	"fmt"
	"io/ioutil"
)

func main() {
	content := []byte{120, 156, 181, 80, 65, 78, 195, 48, 16, 252, 10, 242, 57, 69, 118, 226, 166, 38, 247, 156, 64, 42, 42, 130, 107, 100, 156, 165, 88, 196, 118, 149, 93, 35, 160, 234, 223, 89, 183, 61, 112, 42, 226, 192, 109, 118, 118, 102, 103, 180, 123, 65, 62, 0, 146, 13, 59, 209, 237, 5, 189, 15, 8, 78, 116, 74, 215, 70, 27, 211, 174, 100, 85, 184, 124, 34, 111, 86, 82, 171, 67, 37, 144, 102, 31, 183, 195, 15, 167, 168, 165, 90, 46, 164, 94, 72, 115, 165, 100, 87, 235, 174, 145, 215, 39, 189, 168, 68, 72, 209, 83, 154, 7, 22, 83, 70, 86, 67, 180, 207, 19, 140, 188, 114, 41, 4, 27, 71, 44, 225, 155, 254, 169, 223, 60, 244, 195, 221, 122, 125, 251, 120, 95, 24, 103, 221, 43, 20, 144, 50, 161, 31, 143, 16, 179, 115, 128, 8, 108, 225, 114, 47, 214, 79, 121, 62, 15, 232, 191, 224, 8, 74, 51, 6, 92, 213, 71, 130, 57, 218, 233, 175, 78, 182, 142, 30, 223, 254, 35, 91, 53, 77, 219, 94, 118, 47, 165, 50, 210, 148, 18, 148, 232, 124, 128, 31, 104, 183, 151, 91, 176, 126, 55, 167, 143, 207, 95, 3, 15, 229, 180, 155, 60, 68, 42, 159, 231, 241, 27, 47, 165, 167, 25}
	fmt.Println(string(content))

	enflated, err := ioutil.ReadAll(flate.NewReader(bytes.NewReader(content[2:])))
	if err != nil {
		panic(err)
	}
	fmt.Println(string(enflated))
	
	
	// zlib
	r, err := zlib.NewReader(bytes.NewReader(content))
	if err != nil {
		panic(err)
	}
	enflated, err = ioutil.ReadAll(r)
	if err != nil {
		panic(err)
	}
	fmt.Println(string(enflated))
}

文件压缩:

package main

import (
	"compress/flate"
	"io"
	"os"
)

func decompress(inputFile, outputFile string) {
	i, _ := os.Open(inputFile)
	defer i.Close()
	f := flate.NewReader(i)
	defer f.Close()
	o, _ := os.Create(outputFile)
	defer o.Close()
	io.Copy(o, f)
}

func compress(inputFile, outputFile string) {
	i, _ := os.Open(inputFile)
	defer i.Close()
	o, _ := os.Create(outputFile)
	defer o.Close()
	f, _ := flate.NewWriter(o, flate.BestCompression)
	defer f.Close()
	io.Copy(f, i)
}

func main() {
	compress("compress.go", "compress.min")
	decompress("compress.min", "compress_1.go")
}

用zlib 压缩、解压字符串

package main

import (
	"bytes"
	"compress/zlib"
	"fmt"
	"io"
)

func main() {
	var in bytes.Buffer
	b := []byte(`hello golang`)
	w := zlib.NewWriter(&in)
	w.Write(b)
	w.Close()

	var out bytes.Buffer
	r, _ := zlib.NewReader(&in)
	io.Copy(&out, r)
	fmt.Println(out.String())
}
本文网址: https://golangnote.com/topic/167.html (转载注明出处)
关于GolangNote:记录在工作中使用golang 遇到、面临的相关问题及解决方法。如果你在这里获得一些知识或信息,解决你的编程问题,请考虑捐赠给不幸的人或者你喜欢的慈善机构,除捐赠外,种植树木、志愿服务或减少排碳的行为也很有益处。如果你有任何问题可以在下面 留言
Be the first to comment!
Captcha image
Relative Articles