读取tar文件
- package main
- import (
- "archive/tar"
- "fmt"
- "io"
- "os"
- )
- func main() {
- f, err := os.Open("/home/chenbaoke/10.tar")
- if err != nil {
- fmt.Println(err)
- return
- }
- defer f.Close()
- r := tar.NewReader(f)
- for hdr, err := r.Next(); err != io.EOF; hdr, err = r.Next() {
- if err != nil {
- fmt.Println(err)
- return
- }
- fileinfo := hdr.FileInfo()
- fmt.Println(fileinfo.Name())
- f, err := os.Create("/home/chenbaoke/develop/" + fileinfo.Name())
- if err != nil {
- fmt.Println(err)
- }
- defer f.Close()
- _, err = io.Copy(f, r)
- if err != nil {
- fmt.Println(err)
- }
- }
- }
写入tar文件
- package main
- import (
- "archive/tar"
- "fmt"
- "io"
- "os"
- )
- func main() {
- f, err := os.Create("/home/chenbaoke/10.tar") //创建一个tar文件
- if err != nil {
- fmt.Println(err)
- return
- }
- defer f.Close()
- tw := tar.NewWriter(f)
- defer tw.Close()
- fileinfo, err := os.Stat("/home/chenbaoke/1.go") //获取文件相关信息
- if err != nil {
- fmt.Println(err)
- }
- hdr, err := tar.FileInfoHeader(fileinfo, "")
- if err != nil {
- fmt.Println(err)
- }
- err = tw.WriteHeader(hdr) //写入头文件信息
- if err != nil {
- fmt.Println(err)
- // return
- }
- f1, err := os.Open("/home/chenbaoke/1.go")
- if err != nil {
- fmt.Println(err)
- return
- }
- m, err := io.Copy(tw, f1) //将文件1.go中信息写入压缩包中
- if err != nil {
- fmt.Println(err)
- // return
- }
- fmt.Println(m)
- }