golang中tar压缩和解压文件详情

这篇文章主要给大家介绍golang中tar压缩和解压文件,文章以查看官方文档自带的给大家演习一下golang的archive/tar压缩和解压功能,需要的朋友可以参考一下

目录
  • 1、压缩并输出tar.gz文档

  • 2、tar解压缩

查看官方文档,官方自带的演示:

//官方演示package main import(    "archive/tar"    "bytes"    "fmt"    "io"    "log"    "os") func main() {    //将若干文件写入压缩文档    //这边源文件是直接写在代码里哈,然后也没有输出一个文档    //后面会演示源文件进行压缩,然后输出一个tar.gz的压缩文档    var buf bytes.Buffer    tw := tar.NewWriter(&buf)    var files = []struct {        Name, Body string    }{        {"readme.txt", "This archive contains some text files."},        {"gopher.txt", "Gopher names:\nGeorge\nGeoffrey\nGonzo"},        {"todo.txt", "Get animal handling license."},    }    for_, file:= range files {        hdr := &tar.Header{            Name: file.Name,            Mode: 0600,            Size: int64(len(file.Body)),        }        iferr := tw.WriteHeader(hdr); err != nil {            log.Fatal(err)        }        if_, err := tw.Write([]byte(file.Body)); err != nil {            log.Fatal(err)        }    }    iferr := tw.Close(); err != nil {        log.Fatal(err)    }     //上面压缩了之后,压缩内容都存储在buf这个变量里    //这边遍历输出一下即可    tr:= tar.NewReader(&buf)    for{        hdr, err := tr.Next()        iferr == io.EOF {            break//文件已经遍历完成了        }        iferr != nil {            log.Fatal(err)        }        fmt.Printf("%s的文件内容: ", hdr.Name)        if_, err := io.Copy(os.Stdout, tr); err != nil {            log.Fatal(err)        }        fmt.Println()    } }

1、压缩并输出tar.gz文档

官方的演示中并未将压缩的内容输出文档,实际使用中经常会用到。这边可用os库中的文件操作,将压缩内容写入文档,参考

代码如下:

执行一下哈:

> go run compress.go 

golang中tar压缩:

2、tar解压缩

os

执行一下:

> go run decompress.go  

golang中tar解压:

到此这篇关于golang中tar压缩和解压文件详情的文章就介绍到这了

原文链接:http://www.01happy.com/golang-tar/