Skip to content
Go bindings for unarr (decompression library for RAR, TAR, ZIP and 7z archives)
Branch: master
Clone or download
Latest commit dd30f8d Feb 3, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
external Fix mingw build Sep 18, 2017
testdata
.appveyor.yml Update .appveyor.yml Oct 28, 2017
.travis.yml Update Go version Oct 28, 2017
LICENSE Bundle C sources Mar 12, 2017
README.md Update README.md Jul 2, 2018
unarr.go Fix file descriptor leak. Fixes #2 Nov 13, 2017
unarr_cgo.go
unarr_test.go Add more tests Oct 28, 2017

README.md

go-unarr

TravisCI Build Status AppVeyor Build Status GoDoc Go Report Card

Golang bindings for the unarr library from sumatrapdf.

unarr is a decompression library for RAR, TAR, ZIP and 7z archives.

Installation

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

Examples

Open archive
a, err := unarr.NewArchive("test.7z")
if err != nil {
    panic(err)
}
defer a.Close()
Read first entry from archive
err := a.Entry()
if err != nil {
    panic(err)
}

data, err := a.ReadAll()
if err != nil {
    panic(err)
}
List contents of archive
list, err := a.List()
if err != nil {
    panic(err)
}
Read known filename from archive
err := a.EntryFor("filename.txt")
if err != nil {
    panic(err)
}

data, err := a.ReadAll()
if err != nil {
    panic(err)
}
Read first 8 bytes of the entry
err := a.Entry()
if err != nil {
    panic(err)
}

data := make([]byte, 8)

n, err := a.Read(data)
if err != nil {
    panic(err)
}
Read all entries from archive
for {
    err := a.Entry()
    if err != nil {
        if err == io.EOF {
            break
        } else {
            panic(err)
        }
    }

    data, err := a.ReadAll()
    if err != nil {
        panic(err)
    }
}
Extract contents of archive to destination path
err := a.Extract("/tmp/path")
if err != nil {
    panic(err)
}
You can’t perform that action at this time.