[转]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") } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |