当前位置: 首页 > 面试题库 >

在Go中读取XZ文件

暨弘毅
2023-03-14
问题内容

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


问题答案:

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



 类似资料:
  • 问题内容: 我在Go中找不到功能。我可以弄清楚如何快速编写一个,但是我只是想知道我是否在这里忽略了一些东西。如何逐行读取文件? 问题答案: _注意: 可接受的答案在早期的Go版本中是正确的。 包中有ReadLine函数。 请注意,如果该行不适合读取缓冲区,则该函数将返回不完整的行。如果要始终通过单次调用函数来读取程序中的整行,则需要将该函数封装到自己的函数中,该函数在for循环中进行调用。 之所以

  • 读写文件是很多程序的基本任务,下面我们看看Go里面的文件读取。 package main import ( "bufio" "fmt" "io" "io/ioutil" "os" ) // 读取文件的函数调用大多数都需要检查错误, // 使用下面这个错误检查方法可以方便一点 func check(e error) { if e != nil {

  • 问题内容: 我需要阅读一个以GBK编码的文本文件。Go编程语言中的标准库假定所有文本均以UTF-8编码。 如何读取其他编码的文件? 问题答案: 以前(如在较早的答案中所述),“简单”的方法是使用需要cgo并包装iconv库的第三方程序包。由于许多原因,这是不希望的。值得庆幸的是,有一段时间以来,仅使用Go Authors提供的软件包(不是在主要软件包中,而是在Go子存储库中),就有了一种上乘的Go

  • 问题内容: package main &{0xc42000a240}无 0无 没有错误,也没有数据。 从系统头文件读取此路径。 系统:macOS el capiton,go版本go1.8 darwin / amd64 我的最终目标是将此文件读入结构体中。此文件包含系统用户信息。 我可以这样做吗? 我会继续尝试… 问题答案: 您可以为此使用函数: 原始代码中的问题是读到的 长度为0个字节。由于阅读器

  • 问题内容: 我对Go完全陌生,我试图读取一个二进制文件,一次读取一个字节或几个字节。该文档并没有多大帮助,我找不到任何教程或简单示例(顺便说一句,Google如何给他们的语言提供这样一个难以理解的名称?)。基本上,如何打开文件,然后将一些字节读入缓冲区?有什么建议吗? 问题答案: 要处理文件,该软件包是您的朋友: 在过去的文件是如何打开更多的控制,看到代替(DOC) 。 为了读取文件,有很多方法。

  • 问题内容: 我有一些要解析的大型json文件,我想避免一次将所有数据加载到内存中。我想要一个可以一次返回每个字符的函数/循环。 我发现这个示例可以遍历字符串中的单词,而bufio包中的ScanRunes函数似乎可以一次返回一个字符。我也有bufio提供的功能,大多数情况下都可以正常工作,但是感觉很沉重。 编辑 我比较了3种方法。全部使用循环从bufio.Reader或bufio.Scanner中提