问问题
2548 次
2 回答
9
你有 3 个选项。
- 尝试另一个库,也许是使用 cgo 的库。我在这里看到两个。
- 直接使用 cgo/制作自己的库。
- 使用 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
}
于 2013-10-24T04:04:07.310 回答
2
我最近创建了一个XZ解压包。它不需要 Cgo。你可以在这里找到它:
将标准输入解压到标准输出的程序:
package main
import (
"io"
"log"
"os"
"github.com/xi2/xz"
)
func main() {
r, err := xz.NewReader(os.Stdin, 0)
if err != nil {
log.Fatal(err)
}
_, err = io.Copy(os.Stdout, r)
if err != nil {
log.Fatal(err)
}
}
于 2015-07-18T12:23:08.343 回答