我们可以使用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
}