golang 将文件添加到现有的zip压缩包中
要将文件添加到现有的zip压缩包中,可以使用Go语言内置的archive/zip包。以下是一个示例代码:
package main
import (
"archive/zip"
"fmt"
"os"
)
func main() {
// 打开现有的zip文件
existingZipFile, err := os.OpenFile("example.zip", os.O_RDWR, 0644)
if err != nil {
fmt.Println(err)
return
}
defer existingZipFile.Close()
// 创建一个zip文件的读写器
zipReader, err := zip.NewReader(existingZipFile, existingZipFile.Stat().Size())
if err != nil {
fmt.Println(err)
return
}
// 创建一个新的zip文件
newZipFile, err := os.Create("new.zip")
if err != nil {
fmt.Println(err)
return
}
defer newZipFile.Close()
// 创建一个zip文件的写入器
zipWriter := zip.NewWriter(newZipFile)
// 复制现有zip文件中的所有文件到新的zip文件中
for _, file := range zipReader.File {
// 打开现有文件
existingFile, err := file.Open()
if err != nil {
fmt.Println(err)
return
}
defer existingFile.Close()
// 创建一个新文件
newFile, err := zipWriter.Create(file.Name)
if err != nil {
fmt.Println(err)
return
}
// 复制现有文件的内容到新文件中
_, err = io.Copy(newFile, existingFile)
if err != nil {
fmt.Println(err)
return
}
}
// 添加新文件到新的zip文件中
newFile, err := zipWriter.Create("newfile.txt")
if err != nil {
fmt.Println(err)
return
}
// 写入新文件的内容
_, err = newFile.Write([]byte("Hello, world!"))
if err != nil {
fmt.Println(err)
return
}
// 关闭zip文件的写入器
err = zipWriter.Close()
if err != nil {
fmt.Println(err)
return
}
}
以上代码将现有的example.zip文件复制到一个新的new.zip文件中,并添加一个名为newfile.txt的新文件。要添加更多文件,可以使用zipWriter.Create方法创建新文件并将其内容写入。最后,记得关闭zip文件的写入器。
原文地址: https://www.cveoy.top/t/topic/btsW 著作权归作者所有。请勿转载和采集!