技术文摘
Golang 文件压缩与解压缩示例代码
2024-12-28 22:45:29 小编
Golang 文件压缩与解压缩示例代码
在 Go 语言中,实现文件的压缩与解压缩是一项常见且实用的任务。下面将为您展示如何使用 Go 语言来完成这一操作,并提供相关的示例代码。
我们需要导入一些必要的包,例如 archive/zip 和 io 等。
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 语言进行文件操作时有所帮助。
- Create Custom Plans with planmd in Goose
- 解决DuckDB导入CSV文件时的类型错误问题
- 高效地不使用Pandas对大型二维列表进行分组的方法
- 不使用Pandas快速分组二维列表的方法
- DuckDB读取CSV文件时指定列类型的方法
- DuckDB指定CSV文件读取时字段类型的方法
- 在Python DuckDB里怎样通过read_csv函数指定CSV文件字段类型
- VS Code中Delve (dlv)的配置方法
- Anaconda Channel详解:添加、管理及启用/禁用方法
- 不借助Pandas怎样快速分组二维列表中的连续元素
- 不借助Pandas实现二维列表的快速分组方法
- Redis实现只更新值不更新过期时间的方法
- 高效读取NumPy ndarray中数据的方法
- Python 用 writelines() 方法在文件写入带换行符列表的方法
- Python Day:字符串函数、循环、if else条件及任务