go中读取xz文件

如何在go程序中读取xz文件?当我尝试使用lzma读取它们时,我在lzma头错误中收到错误.
最佳答案
你有3个选择.

>尝试使用另一个库,也许是使用cgo的库.我看到两个here.
>直接使用cgo /制作自己的lib.
>使用xz可执行文件.

选项三比听起来容易.这是我会用的:

func xzReader(r io.Reader) io.ReadCloser {
    rpipe, wpipe := io.Pipe()

    cmd := exec.Command("xz", "--decompress", "--stdout")
    cmd.Stdin = r
    cmd.Stdout = wpipe

    go func() {
        err := cmd.Run()
        wpipe.CloseWithError(err)
    }()

    return rpipe
}

可运行代码:http://play.golang.org/p/SrgZiKdv9a

转载注明原文:go中读取xz文件 - 代码日志