在 Go 中从 tar 文件中提取

这段代码试图将一些文本tar压缩到一个文件中并解压缩它。代码tar有效,但似乎我做错了什么,因为untar同一个文件不起作用。


当我使用 OS GUI 手动解压缩 tar.gz 文件时,它可以工作,但不能在此代码中使用。


http://play.golang.org/p/diTOojUuBX


func main() {

        mpath := "a.tar.gz"

        // defer os.Remove(mpath)

        f, err := overwrite(mpath)

        defer f.Close()

        if err != nil {

                panic(err)

        }

        gw := gzip.NewWriter(f)

        defer gw.Close()

        if err != nil {

                panic(err)

        }

        tw := tar.NewWriter(gw)

        for _, file := range files {

                hdr := &tar.Header{

                        Name: file.Name,

                        Mode: 0600,

                        Size: int64(len(file.Body)),

                }

                if err := tw.WriteHeader(hdr); err != nil {

                        panic(err)

                }

                if _, err := tw.Write([]byte(file.Body)); err != nil {

                        panic(err)

                }

        }

        // Make sure to check the error on Close.

        if err := tw.Close(); err != nil {

                panic(err)

        }


        fr, err := read(mpath)

        defer fr.Close()

        if err != nil {

                panic(err)

        }

        gr, err := gzip.NewReader(fr)

        defer gr.Close()

        if err != nil {

                panic(err)

        }

        tr := tar.NewReader(gr)


    


杨魅力
浏览 155回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go