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)
}