要将文件添加到现有的 ZIP 压缩包中,可以使用 Go 语言内置的 archive/zip 包。以下是一个示例代码:

package main

import (
    "archive/zip"
    "fmt"
    "io"
    "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 文件的写入器。

Golang: 如何将文件添加到现有的 ZIP 压缩包中

原文地址: https://www.cveoy.top/t/topic/mWW2 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录