3

go プログラムでxzファイルを読み取るにはどうすればよいですか? を使用して読み込もうとするとlzmaerror in lzma headerエラーが発生します。

4

2 に答える 2

9

3 つのオプションがあります。

  1. 別のライブラリ、おそらく cgo を使用するライブラリを試してください。ここに 2 つ表示されます。
  2. cgo を直接使用するか、独自のライブラリを作成します。
  3. xz 実行可能ファイルを使用します。

オプション 3 は、思ったより簡単です。これが私が使用するものです:

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

于 2013-10-24T04:04:07.310 に答える