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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用Golang将文件添加到现有的zip文件中相关的知识,希望对你有一定的参考价值。

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

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

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

有点困惑。

答案

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

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

另一答案

虽然我还没有尝试使用已经存在的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
}

以上是关于如何使用Golang将文件添加到现有的zip文件中的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法将文件夹添加到现有的 7za 存档中?

如何将熊猫数据添加到现有的 csv 文件中?

将文件添加到现有 Zip

如何将一些脚本添加到现有的 swf 文件中?

如何将一些脚本添加到现有的swf文件?

iText - 将内容添加到现有的 PDF 文件