一尘不染

在Go中读取XZ文件

go

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


阅读 313

收藏
2020-07-02

共1个答案

一尘不染

您有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
}

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

2020-07-02