Как я могу читать xz файлов в программе go? Когда я пытаюсь прочитать их, используя lzma
, я получаю ошибку error in lzma header
.Чтение xz файлов в go
ответ
У вас есть 3 варианта.
- Попробуйте использовать другую библиотеку, возможно, использующую cgo. Я вижу два here.
- Используйте 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
}
Runnable код здесь: http://play.golang.org/p/SrgZiKdv9a
Спасибо, я как-то пропустил и godoc.org, и этот удивительно простой трубопровод. – phihag
Ваше решение Option 3 обычно полезно для широкого диапазона команд оболочки, которые должны быть включены в программы Go. –
Я недавно создал пакет декомпрессионной XZ. Это не требует Cgo. Вы можете найти его здесь:
Программа для распаковки стандартного ввода на стандартный вывод:
package main
import (
"io"
"log"
"os"
"xi2.org/x/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)
}
}
- 1. Чтение файлов с спецификацией в Go
- 2. Чтение сжатого файла (.xz) в Apache pig
- 3. Чтение файлов и контрольные суммы в go. Разница между методами
- 4. Чтение файлов журналов по мере их обновления в Go
- 5. Чтение JSON в GO Струны
- 6. извлечение файла из файла xz
- 7. Маска разрешения файлов в Go
- 8. Чтение текстового файла до GO
- 9. GO - Название пакета файлов
- 10. Извлечение XZ-сжатия
- 11. Three.js - Перетаскивание (XZ)
- 12. Открытие файлов xz с помощью Apache Commons VFS
- 13. Чтение нескольких элементов из канала в Go
- 14. Эффективное чтение и запись CSV в Go
- 15. Чтение файла US-ASCII в go
- 16. Чтение файлов в Android
- 17. чтение файлов в R
- 18. Чтение файлов в Meteor
- 19. Чтение файлов в python
- 20. Чтение файлов в PyQt
- 21. Чтение файлов в webservice
- 22. Чтение файлов в Java
- 23. Чтение файлов в словари
- 24. Чтение файлов в задаче
- 25. Чтение файлов в WP8
- 26. Чтение файлов в подпапках
- 27. Чтение файлов в JSON
- 28. Чтение файлов в Fortran
- 29. Чтение файлов в R
- 30. Чтение файлов в программе
Я предполагаю, что эта библиотека поддерживает только LZMA и не LZMA2, который используется 'xz' архивов , – nemo