• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    Go语言压缩和解压缩tar.gz文件的方法

    本文实例讲述了Go语言压缩和解压缩tar.gz文件的方法。分享给大家供大家参考。具体分析如下:

    golang处理压缩包,最常用的就是tar.gz了,这里写了一个测试一下。

    压缩文件:

    复制代码 代码如下:
    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")
    }

    解压文件:

    复制代码 代码如下:
    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语言程序设计有所帮助。

    您可能感兴趣的文章:
    • go语言制作的zip压缩程序
    • GO语言实现批量压缩图片和水印
    • go语言通过zlib压缩数据的方法
    • Golang使用zlib压缩和解压缩字符串
    • Go 语言中gin使用gzip压缩遇到的问题
    • golang中snappy的使用场合实例详解
    上一篇:Go语言按字节截取字符串的方法
    下一篇:Go语言的队列和堆栈实现方法
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

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