在 CentOS 上使用 Golang 打包文件,你可以使用 Go 的 archive/zip
包来创建 ZIP 文件。以下是一个简单的示例,展示了如何使用 Go 在 CentOS 上创建一个包含指定文件的 ZIP 文件。
首先,确保你已经安装了 Go。如果没有安装,可以通过以下命令安装:
sudo yum install golang
然后,创建一个名为 main.go
的文件,并添加以下代码:
package main
import (
"archive/zip"
"fmt"
"io/ioutil"
"os"
)
func main() {
// 要打包的文件列表
files := []string{"file1.txt", "file2.txt"}
// 创建一个新的 ZIP 文件
zipFile, err := os.Create("output.zip")
if err != nil {
fmt.Println("Error creating zip file:", err)
return
}
defer zipFile.Close()
// 创建一个 zip.Writer
zipWriter := zip.NewWriter(zipFile)
defer zipWriter.Close()
// 遍历要打包的文件列表
for _, file := range files {
err := addFileToZip(zipWriter, file)
if err != nil {
fmt.Println("Error adding file to zip:", err)
return
}
}
fmt.Println("ZIP file created successfully")
}
func addFileToZip(zipWriter *zip.Writer, filePath string) error {
// 读取要添加到 ZIP 文件中的文件
fileData, err := ioutil.ReadFile(filePath)
if err != nil {
return err
}
// 创建一个新的 zip.FileHeader
header, err := zip.FileInfoHeader(&zip.FileInfo{Name: filePath})
if err != nil {
return err
}
// 设置 zip.FileHeader 的模式(例如:普通文件、目录等)
header.Mode = 0600
// 创建一个新的 zip.File
zipFile, err := zipWriter.CreateHeader(header)
if err != nil {
return err
}
// 将文件数据写入 zip.File
_, err = zipFile.Write(fileData)
if err != nil {
return err
}
return nil
}
在这个示例中,我们创建了一个名为 output.zip
的 ZIP 文件,并将 file1.txt
和 file2.txt
添加到其中。你可以根据需要修改 files
列表以包含要打包的文件。
保存 main.go
文件后,在终端中运行以下命令来构建并运行程序:
go build main.go
./main
程序运行完成后,你应该会在当前目录下看到一个名为 output.zip
的 ZIP 文件,其中包含了指定的文件。