Golang 文件压缩与解压缩示例代码

2024-12-28 22:45:29   小编

Golang 文件压缩与解压缩示例代码

在 Go 语言中,实现文件的压缩与解压缩是一项常见且实用的任务。下面将为您展示如何使用 Go 语言来完成这一操作,并提供相关的示例代码。

我们需要导入一些必要的包,例如 archive/zipio 等。

import (
    "archive/zip"
    "fmt"
    "io"
    "os"
)

接下来,让我们看一下文件压缩的代码实现。

func CompressFiles(files []string, outputFile string) error {
    // 创建一个新的 ZIP 文件
    outFile, err := os.Create(outputFile)
    if err!= nil {
        return err
    }
    defer outFile.Close()

    // 创建一个 ZIP 写入器
    zipWriter := zip.NewWriter(outFile)
    defer zipWriter.Close()

    for _, file := range files {
        // 打开要压缩的文件
        inFile, err := os.Open(file)
        if err!= nil {
            return err
        }
        defer inFile.Close()

        // 获取文件信息
        info, err := inFile.Stat()
        if err!= nil {
            return err
        }

        // 创建一个新的文件头
        header, err := zip.FileInfoHeader(info)
        if err!= nil {
            return err
        }

        // 写入文件头
        writer, err := zipWriter.CreateHeader(header)
        if err!= nil {
            return err
        }

        // 复制文件内容到 ZIP 中
        _, err = io.Copy(writer, inFile)
        if err!= nil {
            return err
        }
    }

    return nil
}

上述代码定义了一个 CompressFiles 函数,它接受要压缩的文件列表和输出的 ZIP 文件路径作为参数。通过一系列的操作,将文件逐个压缩到指定的 ZIP 文件中。

然后是文件解压缩的实现。

func DecompressFile(zipFile, outputDir string) error {
    // 打开 ZIP 文件
    reader, err := zip.OpenReader(zipFile)
    if err!= nil {
        return err
    }
    defer reader.Close()

    for _, file := range reader.File {
        // 打开解压后的文件
        outFile, err := os.Create(outputDir + file.Name)
        if err!= nil {
            return err
        }
        defer outFile.Close()

        // 读取压缩文件内容
        inReader, err := file.Open()
        if err!= nil {
            return err
        }
        defer inReader.Close()

        // 复制内容到解压后的文件
        _, err = io.Copy(outFile, inReader)
        if err!= nil {
            return err
        }
    }

    return nil
}

DecompressFile 函数中,我们打开 ZIP 文件,遍历其中的每个文件,创建对应的解压后的文件,并将内容复制过去。

通过以上的示例代码,您可以在 Go 语言中轻松实现文件的压缩与解压缩功能。这在处理文件存储和传输时非常有用,能够有效地节省存储空间和提高传输效率。

希望上述的示例代码和讲解对您在使用 Go 语言进行文件操作时有所帮助。

TAGS: Golang 示例代码 Golang 文件压缩 Golang 解压缩 文件压缩与解压缩

欢迎使用万千站长工具!

Welcome to www.zzTool.com