go实现gzip压缩、解压
程序员文章站
2024-03-13 23:39:28
...
go实现gzip压缩、解压
下面分享一下使用go进行gzip的压缩和解压的过程
package main
import (
"bytes"
"compress/gzip"
"io"
"os"
"testing"
)
func TestCsGzip(t *testing.T) {
//压缩
err := doGzip([]byte("hello,golang"),"/data/aaa.gz","test.txt")
if err != nil {
t.Error(err.Error())
return
}
//解压
content ,err := unGzip("/data/aaa.gz")
if err != nil {
t.Error(err.Error())
return
}
t.Log(string(content))
}
/**
压缩bytes内容
1.根据指定目录创建文件
2.根据文件资源对象生成gzip Writer对象
3.往gzip Writer对象写入内容
*/
func doGzip(content []byte,path string,fileName string) error{
gzFile ,err := os.Create(path)
if err != nil {
return err
}
defer gzFile.Close()
gzipWriter := gzip.NewWriter(gzFile)
defer gzipWriter.Close()
gzipWriter.Name = fileName
_,err = gzipWriter.Write(content)
if err != nil {
return err
}
return nil
}
/**
解压
1.根据指定路径打开gzip文件资源
2.由文件资源创建gzip Reader对象
3.将gizp 内存流copy到指定buf并返回bytes
*/
func unGzip(path string)(content []byte,err error) {
gzipFile, err := os.Open(path)
if err != nil {
return
}
defer gzipFile.Close()
gzipReader, err := gzip.NewReader(gzipFile)
if err != nil {
return
}
defer gzipReader.Close()
var buf bytes.Buffer
_,err = io.Copy(&buf,gzipReader)
if err != nil {
return nil, err
}
return buf.Bytes() ,nil
}
上一篇: curl: (7) Failed to connect to ** port 80: No route to host
下一篇: Get value from agent failed: cannot connect to [[192.168.186.130]:10050]: [113]No route to host
推荐阅读
-
PHP+.htaccess实现全站静态HTML文件GZIP压缩传输(一)
-
java中GZIP压缩解压类使用实例
-
java中GZIP压缩解压类使用实例
-
批处理+Rar实现批量独立压缩目录和解压目录
-
asp.NET中实现文件的压缩和解压(3种方式)
-
Android实现文件压缩与解压缩 博客分类: Android Android压缩解压缩
-
linux 下使用gzip压缩与解压文件 博客分类: linux linuxgzip解压压缩
-
java以zip格式实现压缩解压,有界面 博客分类: javazip界面压缩解压 javazip界面压缩解压
-
gzip unzip java 压缩 解压缩 bytes 博客分类: java gzipunzip压缩解压缩bytes
-
实现自己的解压缩包包工具类 博客分类: Unzip Unzip