如何使用Golang将文件添加到现有的zip文件中

问题描述 投票:3回答:2

我们可以使用Go语言创建一个zip新文件并添加文件。

但是,如何使用GoLang添加带有现有zip文件的新文件?

如果我们可以使用Create函数,如何获取zip.writer引用?

有点困惑。

go zip
2个回答
3
投票

经过更多分析后,我发现,无法使用现有的zip文件添加任何文件。

但是,我可以通过跟踪this URL中给出的hack来添加带有tar文件的文件。


0
投票

虽然我还没有尝试使用已经存在的zip文件然后写入它,但我相信你应该能够为它添加文件。

这是我编写的代码,用于创建包含多个文件的集合zip文件,以便加快将数据上传到其他位置。我希望它有所帮助!

type fileData struct {
    Filename string
    Body     []byte
}

func main() {
    outputFilename := "path/to/file.zip"

    // whatever you want as filenames and bodies
    fileDatas := createFileDatas()

    // create zip file
    conglomerateZip, err := os.Create(outputFilename)
    if err != nil {
        return err
    }
    defer conglomerateZip.Close()

    zipWriter := zip.NewWriter(conglomerateZip)
    defer zipWriter.Close()

    // populate zip file with multiple files
    err = populateZipfile(zipWriter, fileDatas)
    if err != nil {
        return err
    }

}

func populateZipfile(w *zip.Writer, fileDatas []*fileData) error {
    for _, fd := range fileDatas {
        f, err := w.Create(fd.Filename)
        if err != nil {
            return err
        }

        _, err = f.Write([]byte(fd.Body))
        if err != nil {
            return err
        }

        err = w.Flush()
        if err != nil {
            return err
        }
    }
    return nil
}
© www.soinside.com 2019 - 2024. All rights reserved.