这篇文章主要给大家介绍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/