Golang compress.bzip2 包详解
compress/bzip2
包提供了对 Bzip2 数据格式的读写支持。Bzip2 是一种高效的数据压缩算法,通常用于 UNIX 系统中。
以下是使用 compress/bzip2
包进行 Bzip2 压缩和解压的简单示例:
package main
import (
"compress/bzip2"
"io"
"os"
)
func main() {
// 压缩文件
compressFile := func(filename string) error {
srcFile, err := os.Open(filename)
if err != nil {
return err
}
defer srcFile.Close()
dstFile, err := os.Create(filename + ".bz2")
if err != nil {
return err
}
defer dstFile.Close()
bw := bzip2.NewWriter(dstFile, bzip2.BestCompression)
defer bw.Close()
_, err = io.Copy(bw, srcFile)
return err
}
// 解压文件
decompressFile := func(filename string) error {
srcFile, err := os.Open(filename)
if err != nil {
return err
}
defer srcFile.Close()
br := bzip2.NewReader(srcFile)
dstFile, err := os.Create(filename[:len(filename)-len(".bz2")])
if err != nil {
return err
}
defer dstFile.Close()
_, err = io.Copy(dstFile, br)
return err
}
// 使用示例
filename := "example.txt"
err := compressFile(filename)
if err != nil {
panic(err)
}
err = decompressFile(filename + ".bz2")
if err != nil {
panic(err)
}
}
这段代码展示了如何使用 compress/bzip2
包来压缩和解压文件。compressFile
函数创建了一个压缩写入对象,并将文件内容写入压缩流中。decompressFile
函数创建了一个解压读取器,从压缩文件中读取并写入解压后的内容。
评论已关闭