压缩文件
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") }
原文地址:https://www.jb51.cc/go/191100.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。