Golang实现GZIP压缩目录 - 完整代码示例
Golang实现GZIP压缩目录
本文将介绍如何使用Golang对整个目录进行GZIP压缩。我们将使用archive/zip和compress/gzip包来完成这个任务。
以下是完整的代码示例:
package main
import (
'archive/zip'
'compress/gzip'
'io'
'os'
'path/filepath'
)
func main() {
inputDir := 'input' // 要压缩的目录
outputFile := 'output.gz' // 压缩后的输出文件
// 创建输出文件
outFile, err := os.Create(outputFile)
if err != nil {
panic(err)
}
defer outFile.Close()
// 创建gzip writer
gzipWriter := gzip.NewWriter(outFile)
defer gzipWriter.Close()
// 创建zip writer
zipWriter := zip.NewWriter(gzipWriter)
defer zipWriter.Close()
// 遍历目录并压缩文件
err = filepath.Walk(inputDir, func(path string, info os.FileInfo, err error) error {
if err != nil {
return err
}
// 忽略目录
if info.IsDir() {
return nil
}
// 创建文件的压缩写入器
zipFile, err := zipWriter.Create(path)
if err != nil {
return err
}
// 打开文件
file, err := os.Open(path)
if err != nil {
return err
}
defer file.Close()
// 将文件内容拷贝到压缩写入器中
_, err = io.Copy(zipFile, file)
if err != nil {
return err
}
return nil
})
if err != nil {
panic(err)
}
println('压缩完成')
}
代码解释:
- 首先,我们定义了要压缩的目录
inputDir和压缩后的输出文件outputFile。 - 然后,我们创建输出文件,并使用
gzip.NewWriter和zip.NewWriter创建gzip writer和zip writer。 - 接下来,我们使用
filepath.Walk函数遍历目录中的所有文件。 - 对于每个文件,我们使用
zipWriter.Create创建一个压缩写入器,然后将文件内容拷贝到压缩写入器中。 - 最后,我们关闭所有写入器,完成压缩。
注意:
- 上述代码会将整个目录压缩成一个gzip文件。
- 如果要将目录压缩成zip文件,可以直接使用
archive/zip包中的zipWriter。
希望本文能够帮助你理解如何使用Golang进行GZIP压缩目录。
原文地址: https://www.cveoy.top/t/topic/fONL 著作权归作者所有。请勿转载和采集!