文档手册

go-unarr库-golang解压7z文件

2024-05-27 20:02:01



Unar的Go绑定(RAR、TAR、ZIP和7z档案的解压缩库)


执行命令:

go get -v github.com/gen2brain/go-unarr


// 打开归档文件

a, err := unarr.NewArchive("test.7z")
if err != nil {
    panic(err)
}
defer a.Close() // 确保在函数结束时关闭归档文件



// 读取归档文件中的第一个条目

err := a.Entry()
if err != nil {
    panic(err)
}



// 读取归档文件中第一个条目的全部内容

data, err := a.ReadAll()
if err != nil {
    panic(err)
}



// 列出归档文件中的所有内容

list, err := a.List()
if err != nil {
    panic(err)
}



// 读取归档文件中已知文件名的内容

err := a.EntryFor("filename.txt")
if err != nil {
    panic(err)
}



// 读取归档文件中已知文件名的全部内容

data, err := a.ReadAll()
if err != nil {
    panic(err)
}



// 读取归档文件中第一个条目的前8个字节

err := a.Entry()
if err != nil {
    panic(err)
}
data := make([]byte, 8)
n, err := a.Read(data)
if err != nil {
    panic(err)
}



// 读取归档文件中的所有条目

for {
    err := a.Entry()
    if err != nil {
        if err == io.EOF { // 如果已经读取完所有条目,则跳出循环
            break
        } else {
            panic(err)
        }
    }
    // 读取当前条目的全部内容
    data, err := a.ReadAll()
    if err != nil {
        panic(err)
    }
}



// 将归档文件中的内容提取到指定路径

_, err := a.Extract("/tmp/path")
if err != nil {
    panic(err)
}