在Golang中,你可以使用标准库中的archive/zip包来创建ZIP文件,从而压缩文件大小。以下是一个简单的示例,展示了如何使用Golang在Ubuntu系统上压缩一个文件夹:
package main
import (
"archive/zip"
"fmt"
"io"
"os"
"path/filepath"
)
func main() {
sourceFolder := "path/to/your/source/folder" // 替换为你要压缩的文件夹路径
zipFileName := "output.zip" // 输出的ZIP文件名
err := zipFolder(sourceFolder, zipFileName)
if err != nil {
fmt.Println("Error:", err)
} else {
fmt.Println("Successfully compressed the folder.")
}
}
func zipFolder(sourceFolder, zipFileName string) error {
zipFile, err := os.Create(zipFileName)
if err != nil {
return err
}
defer zipFile.Close()
zipWriter := zip.NewWriter(zipFile)
defer zipWriter.Close()
filepath.Walk(sourceFolder, func(path string, info os.FileInfo, err error) error {
if err != nil {
return err
}
header, err := zip.FileInfoHeader(info)
if err != nil {
return err
}
header.Name, _ = filepath.Rel(sourceFolder, path)
if info.IsDir() {
header.Name += "/"
} else {
header.Method = zip.Deflate
}
writer, err := zipWriter.CreateHeader(header)
if err != nil {
return err
}
if !info.IsDir() {
file, err := os.Open(path)
if err != nil {
return err
}
defer file.Close()
_, err = io.Copy(writer, file)
if err != nil {
return err
}
}
return nil
})
return nil
}
将上述代码保存为main.go,然后在终端中运行以下命令来编译和运行程序:
go build main.go
./main
这将压缩指定的文件夹并将其保存为ZIP文件。请注意,这个示例仅适用于本地文件系统。如果你需要处理远程文件或URL,你可能需要使用其他库或方法。