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

2018-09-22 01:10

阅读:639

  本文实例讲述了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
}
// 打印文件名称
// 打开文件
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)
}
// 写文件
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)
}
// 显示文件
// 打开文件
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()
// 写文件
if err != nil {
panic(err)
}
}
fmt.Println(un tar.gz ok)
}

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

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


评论


亲,登录后才可以留言!