golang读取整个文件,gzip压缩,然后base64编码为字符串;
将base64字符串解码解码成gzip二进制流,然后gzip解压输出。
func newb64() {
filename := "filename.txt"
fd, err := os.Open(filename)
if err != nil {
panic(err)
}
defer fd.Close()
var buf bytes.Buffer
defer buf.Reset()
gz := gzip.NewWriter(&buf)
defer gz.Close()
io.Copy(gz, fd)
gz.Flush()
gz.Close()
fmt.Println(buf.String())
b64 := base64.StdEncoding.EncodeToString(buf.Bytes())
fmt.Println(b64)
eb64, err := base64.StdEncoding.DecodeString(b64)
if err != nil {
panic(err)
}
buf.Reset()
buf.Write(eb64)
gzr, err := gzip.NewReader(&buf)
if err != nil {
panic(err)
}
var buf2 bytes.Buffer
io.Copy(&buf2, gzr)
fmt.Println(buf2.String())
}