加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

[转]golang压缩加压

发布时间:2020-12-16 18:56:04 所属栏目:大数据 来源:网络整理
导读:压缩文件 packagemainimport("fmt""os""io""archive/tar""compress/gzip")funcmain(){//filewritefw,err:=os.Create("tar/lin_golang_src.tar.gz")iferr!=nil{panic(err)}deferfw.Close()//gzipwritegw:=gzip.NewWriter(fw)defergw.Close()//tarwritetw:=tar

压缩文件

packagemain

import(
"fmt"
"os"
"io"
"archive/tar"
"compress/gzip"
)

funcmain(){
//filewrite
fw,err:=os.Create("tar/lin_golang_src.tar.gz")
iferr!=nil{
panic(err)
}
deferfw.Close()

//gzipwrite
gw:=gzip.NewWriter(fw)
defergw.Close()

//tarwrite
tw:=tar.NewWriter(gw)
defertw.Close()

//打开文件夹
dir,err:=os.Open("file/")
iferr!=nil{
panic(nil)
}
deferdir.Close()

//读取文件列表
fis,err:=dir.Readdir(0)
iferr!=nil{
panic(err)
}

//遍历文件列表
for_,fi:=rangefis{
//逃过文件夹,我这里就不递归了
iffi.IsDir(){
continue
}

//打印文件名称
fmt.Println(fi.Name())

//打开文件
fr,err:=os.Open(dir.Name()+"/"+fi.Name())
iferr!=nil{
panic(err)
}
deferfr.Close()

//信息头
h:=new(tar.Header)
h.Name=fi.Name()
h.Size=fi.Size()
h.Mode=int64(fi.Mode())
h.ModTime=fi.ModTime()

//写信息头
err=tw.WriteHeader(h)
iferr!=nil{
panic(err)
}

//写文件
_,err=io.Copy(tw,fr)
iferr!=nil{
panic(err)
}
}

fmt.Println("tar.gzok")
}

解压缩文件

packagemain

import(
"fmt"
"os"
"io"
//"time"
"archive/tar"
"compress/gzip"
)

funcmain(){
//fileread
fr,err:=os.Open("tar/lin_golang_src.tar.gz")
iferr!=nil{
panic(err)
}
deferfr.Close()

//gzipread
gr,err:=gzip.NewReader(fr)
iferr!=nil{
panic(err)
}
defergr.Close()

//tarread
tr:=tar.NewReader(gr)

//读取文件
for{
h,err:=tr.Next()
iferr==io.EOF{
break
}
iferr!=nil{
panic(err)
}

//显示文件
fmt.Println(h.Name)

//打开文件
fw,err:=os.OpenFile("file2/"+h.Name,os.O_CREATE|os.O_WRONLY,0644/*os.FileMode(h.Mode)*/)
iferr!=nil{
panic(err)
}
deferfw.Close()

//写文件
_,err=io.Copy(fw,tr)
iferr!=nil{
panic(err)
}

}

fmt.Println("untar.gzok")
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读