• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell
您的位置:首页 > 脚本语言 >Golang > Go语言压缩和解压缩tar.gz文件的方法

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

作者: 字体:[增加 减小] 来源:互联网

通过本文主要向大家介绍了go语言和python,go语言和java,go语言和c,go语言,go语言环境搭建等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

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

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

压缩文件:
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")
}</div>

解压文件:
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")
}</div>

这样以后打包下载东西的时候就可以使用了。

希望本文所述对大家的Go语言程序设计有所帮助。

</div>

您可能想查找下面的文章:

  • 使用Go语言简单模拟Python的生成器
  • Go语言压缩和解压缩tar.gz文件的方法

相关文章

  • 深入解析快速排序算法的原理及其Go语言版实现
  • 深入解析Go语言编程中slice切片结构
  • go语言中时间戳格式化的方法
  • Go语言中三种不同md5计算方式的性能比较
  • go语言制作一个gif动态图
  • golang实现http服务器处理静态文件示例
  • golang守护进程用法示例
  • 在Mac OS上安装Go语言编译器的方法
  • Go语言接口用法实例
  • golang针对map的判断,删除操作示例

文章分类

  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell

最近更新的内容

    • linux下通过go语言获得系统进程cpu使用情况的方法
    • go语言实现的memcache协议服务的方法
    • Go语言服务器开发实现最简单HTTP的GET与POST接口
    • Go语言实现的排列组合问题实例(n个数中取m个)
    • Go语言写入字符串到文件的方法
    • Windows环境下vscode-go安装笔记(不支持32位)
    • GO语言基础之数组
    • go语言通过odbc操作Access数据库的方法
    • go语言中时间戳格式化的方法
    • Golang极简入门教程(四):编写第一个项目

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有