ubuntu

Golang Ubuntu打包如何压缩文件大小

小樊
55
2025-09-12 18:19:06
栏目: 编程语言

在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,你可能需要使用其他库或方法。

0
看了该问题的人还看了