为了账号安全,请及时绑定邮箱和手机立即绑定

Golang:将文件附加到现有的 tar 存档

Golang:将文件附加到现有的 tar 存档

Go
犯罪嫌疑人X 2021-06-17 17:01:58
如何将文件附加到 Go 中的现有 tar 存档?我在文档中没有看到任何关于如何做的明显内容。我有一个已经创建的 tar 文件,我想在它关闭后添加更多文件。编辑更改文档中的示例并按照给出的答案,我仍然没有得到预期的结果。前三个文件正在写入 tar,但是当我关闭并再次打开文件以写入它时,新文件永远不会被写入。代码运行良好。我不知道我错过了什么。以下代码为我提供了一个包含三个文件的 tar 文件:readme.txt、gopher.txt、todo.txt。foo.bar 永远不会被写入。package mainimport (    "archive/tar"    "log"    "os")func main() {    f, err := os.Create("/home/jeff/Desktop/test.tar")    if err != nil {        log.Fatalln(err)    }    tw := tar.NewWriter(f)    var files = []struct {        Name, Body string    }{        {"readme.txt", "This archive contains some text files."},        {"gopher.txt", "Gopher names:\nGeorge\nGeoffrey\nGonzo"},        {"todo.txt", "Get animal handling licence."},    }    for _, file := range files {        hdr := &tar.Header{            Name: file.Name,            Size: int64(len(file.Body)),        }        if err := tw.WriteHeader(hdr); err != nil {            log.Fatalln(err)        }        if _, err := tw.Write([]byte(file.Body)); err != nil {            log.Fatalln(err)        }    }    if err := tw.Close(); err != nil {        log.Fatalln(err)    }    f.Close()    // Open up the file and append more things to it    f, err = os.OpenFile("/home/jeff/Desktop/test.tar", os.O_APPEND|os.O_WRONLY, os.ModePerm)    if err != nil {        log.Fatalln(err)    }    tw = tar.NewWriter(f)    test := "this is a test"    hdr := &tar.Header{        Name: "foo.bar",        Size: int64(len(test)),    }    if err := tw.WriteHeader(hdr); err != nil {        log.Fatalln(err)    }    if _, err := tw.Write([]byte(test)); err != nil {        log.Fatalln(err)    }    if err := tw.Close(); err != nil {        log.Fatalln(err)    }    f.Close()}
查看完整描述

2 回答

  • 2 回答
  • 0 关注
  • 240 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信