如何將文件附加到 Go 中的現(xiàn)有 tar 存檔?我在文檔中沒有看到任何關(guān)于如何做的明顯內(nèi)容。我有一個已經(jīng)創(chuàng)建的 tar 文件,我想在它關(guān)閉后添加更多文件。編輯更改文檔中的示例并按照給出的答案,我仍然沒有得到預期的結(jié)果。前三個文件正在寫入 tar,但是當我關(guān)閉并再次打開文件以寫入它時,新文件永遠不會被寫入。代碼運行良好。我不知道我錯過了什么。以下代碼為我提供了一個包含三個文件的 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 回答
- 0 關(guān)注
- 268 瀏覽
添加回答
舉報
0/150
提交
取消