golang 打包文件

原创
2016/06/27 13:53
阅读数 376
package main

import (
	"archive/tar"
	"io"
	"os"

	"fmt"
)

func main() {
	// 创建一个tar文件
	f, err := os.Create("test.tar")
	if err != nil {
		panic(err.Error())
	}
	defer f.Close()

	// 创建一个新的tar.Writer,向w中写入
	tw := tar.NewWriter(f)
	defer tw.Close()

	// 返回一个文件的os.Fileinfo
	fileinfo, err := os.Stat("test.go")
	if err != nil {
		panic(err.Error())
	}

	// 利用fileinfo创建一个Header(Header代表tar档案文件里的单个头)
	hdr, err := tar.FileInfoHeader(fileinfo, "")
	if err != nil {
		fmt.Println(err)
	}

	// 写入一个文件头
	err = tw.WriteHeader(hdr)
	if err != nil {
		fmt.Println(err)
	}

	// 打开文件
	f1, err := os.Open("test.go")
	if err != nil {
		panic(err.Error())
	}

	// 将内容copy进入tar.Writer
	m, _ := io.Copy(tw, f1)

	fmt.Println(m)
}

 

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部