技术文摘
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 语言进行文件操作时有所帮助。
- 12 种 Python 机器学习与数据挖掘工具包,助您收获满满
- Python 视角下的北京二手房房价分析
- 如何优化 MySQL 主从延时过长的问题
- Facebook 组建打击假新闻女性团队,女性会是新闻业的未来吗?
- 姚期智院士:量子计算与经典计算的差异之谜
- 用 Python 写火车票查看器,室友佩服得五体投地,超简单!
- Chrome 解析:HTML/CSS/JS 如何渲染出所见页面
- GitHub 已故障一天!你是否受影响?
- 23 年历史的 Java 不再免费!
- 专科与本科程序员的差别在哪?
- Apache Flink 漫谈系列之五 - 容错机制
- 怎样构建应对亿级流量的高可用负载均衡
- 必看的 Rect 面试题,赶紧收藏
- 10 岁女孩成程序员,拒谷歌 Offer 创首款 AI 桌游
- Adobe 十大 PS 新神技惊艳亮相