go中读取xz文件

phi*_*hag 3 go xz

如何在go程序中读取xz文件?当我尝试使用它们时lzma,我收到error in lzma header错误.

Ste*_*erg 8

你有3个选择.

  1. 尝试使用另一个库,也许是使用cgo的库.我这看到两个.
  2. 直接使用cgo /制作自己的lib.
  3. 使用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
}
Run Code Online (Sandbox Code Playgroud)

这里有可运行的代码:http://play.golang.org/p/SrgZiKdv9a