Golang 7z压缩解压库推荐
请问有没有推荐的Golang库可以实现7z格式的压缩和解压功能?最好能支持密码保护和多线程操作,同时希望文档齐全、维护活跃。目前在官方标准库和常见第三方库中没找到直接支持7z的方案,求有实际使用经验的朋友分享建议。
2 回复
推荐几个常用的Go语言7z压缩解压库:
- go7z - 纯Go实现的7z库,支持压缩和解压,但功能相对基础
- archiver - 功能丰富的压缩库,支持7z、zip、tar等多种格式
- mholt/archiver - 知名压缩库,API友好,支持7z格式
建议优先考虑mholt/archiver,因为它:
- 维护活跃,社区支持好
- 使用简单,几行代码就能搞定
- 支持密码加密压缩
- 跨平台兼容性好
示例代码:
import "github.com/mholt/archiver/v3"
// 压缩
err := archiver.Archive([]string{"file1.txt", "folder"}, "output.7z")
// 解压
err := archiver.Unarchive("file.7z", "output_dir")
如果只需要基础功能,go7z也是不错的选择。注意7z格式较复杂,某些高级功能可能有限制。
更多关于Golang 7z压缩解压库推荐的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
对于Golang中的7z压缩解压,推荐以下两个主流库:
1. mholt/archiver ⭐ (推荐)
功能全面的压缩库,支持7z、zip、tar、rar等多种格式。
import "github.com/mholt/archiver/v4"
// 压缩文件
func compress7z() error {
files, err := archiver.FilesFromDisk(nil, map[string]string{
"./file1.txt": "file1.txt",
"./file2.txt": "file2.txt",
})
if err != nil {
return err
}
out, err := os.Create("archive.7z")
if err != nil {
return err
}
defer out.Close()
format := archiver.CompressedArchive{
Archival: archiver.SevenZip{},
}
return format.Archive(context.Background(), out, files)
}
// 解压文件
func extract7z() error {
return archiver.Unarchive("archive.7z", "./output")
}
2. bodgit/sevenzip
专门针对7z格式的库,提供更底层的7z操作。
import "github.com/bodgit/sevenzip"
// 读取7z文件
func read7z() error {
r, err := sevenzip.OpenReader("archive.7z")
if err != nil {
return err
}
defer r.Close()
for _, file := range r.File {
if file.FileInfo().IsDir() {
continue
}
rc, err := file.Open()
if err != nil {
return err
}
// 处理文件内容
_, err = io.Copy(os.Stdout, rc)
rc.Close()
if err != nil {
return err
}
}
return nil
}
选择建议:
- mholt/archiver:适合需要支持多种压缩格式的场景,API友好
- bodgit/sevenzip:适合专门处理7z格式,需要更精细控制的场景
两个库都支持密码保护的7z文件,安装简单:go get github.com/mholt/archiver/v4

