源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

Go语言压缩和解压缩tar.gz文件的方法

  • 时间:2020-08-08 19:34 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:Go语言压缩和解压缩tar.gz文件的方法
本文实例讲述了Go语言压缩和解压缩tar.gz文件的方法。分享给大家供大家参考。具体分析如下: golang处理压缩包,最常用的就是tar.gz了,这里写了一个测试一下。 压缩文件:
[u]复制代码[/u] 代码如下:
package main import (     "fmt"     "os"     "io"     "archive/tar"     "compress/gzip" ) func main() {     // file write     fw, err := os.Create("tar/lin_golang_src.tar.gz")     if err != nil {         panic(err)     }     defer fw.Close()     // gzip write     gw := gzip.NewWriter(fw)     defer gw.Close()     // tar write     tw := tar.NewWriter(gw)     defer tw.Close()     // 打开文件夹     dir, err := os.Open("file/")     if err != nil {         panic(nil)     }     defer dir.Close()     // 读取文件列表     fis, err := dir.Readdir(0)     if err != nil {         panic(err)     }     // 遍历文件列表     for _, fi := range fis {         // 逃过文件夹, 我这里就不递归了         if fi.IsDir() {             continue         }         // 打印文件名称         fmt.Println(fi.Name())         // 打开文件         fr, err := os.Open(dir.Name() + "/" + fi.Name())         if err != nil {             panic(err)         }         defer fr.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)         if err != nil {             panic(err)         }         // 写文件         _, err = io.Copy(tw, fr)         if err != nil {             panic(err)         }     }     fmt.Println("tar.gz ok") }
解压文件:
[u]复制代码[/u] 代码如下:
package main import (     "fmt"     "os"     "io"     // "time"     "archive/tar"     "compress/gzip" ) func main() {     // file read     fr, err := os.Open("tar/lin_golang_src.tar.gz")     if err != nil {         panic(err)     }     defer fr.Close()     // gzip read     gr, err := gzip.NewReader(fr)     if err != nil {         panic(err)     }     defer gr.Close()     // tar read     tr := tar.NewReader(gr)     // 读取文件     for {         h, err := tr.Next()         if err == io.EOF {             break         }         if err != 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)*/)         if err != nil {             panic(err)         }         defer fw.Close()         // 写文件         _, err = io.Copy(fw, tr)         if err != nil {             panic(err)         }     }     fmt.Println("un tar.gz ok") }
这样以后打包下载东西的时候就可以使用了。 希望本文所述对大家的Go语言程序设计有所帮助。
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部