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

如何在Go中读取二进制文件

陆卓
2023-03-14
问题内容

我对Go完全陌生,我试图读取一个二进制文件,一次读取一个字节或几个字节。该文档并没有多大帮助,我找不到任何教程或简单示例(顺便说一句,Google如何给他们的语言提供这样一个难以理解的名称?)。基本上,如何打开文件,然后将一些字节读入缓冲区?有什么建议吗?


问题答案:

要处理文件,该os软件包是您的朋友:

f, err := os.Open("myfile")
if err != nil {
   panic(err)
}
defer f.Close()

在过去的文件是如何打开更多的控制,看到os.OpenFile()代替(DOC)

为了读取文件,有很多方法。(在上面的示例中)os.File返回的类型实现了接口(它具有带有正确签名的方法),可以直接用于读取缓冲区(a
)中的某些数据,也可以将其包装在缓冲的读取器中(类型)。os.Open``f``io.Reader``Read()``[]byte``bufio.Reader

特别是对于二进制数据,该encoding/binary包非常有用,可以将字节序列读入某种类型的数据结构中。您可以在此处的Go文档中查看示例。该binary.Read()功能可以与使用该os.Open()功能读取的文件一起使用,因为如上所述,它是一个io.Reader

还有还有简单到用io/ioutil包,它允许您阅读整个文件一次在一个字节片(ioutil.ReadFile(),这需要一个文件名,所以你甚至不必打开/关闭自己的文件),或者ioutil.ReadAll()这需要a
io.Reader并返回包含整个文件的字节片。这是ioutil上的文档。

最后,就像其他人提到的那样,您可以使用“
golang”搜索有关Go语言的信息,然后您将找到所需的一切。该golang螺母邮件列表也是寻找答案的好地方(确保发布前先搜索,很多东西已经回答了)。要查找第三方软件包,请访问godoc.org网站。

高温超导



 类似资料:
  • 问题内容: 在Node.js中读取二进制文件的最佳方法是什么? 我正在寻找访问“标头”中的特定字节(少于前100个字节)或逐字节读取文件的方法。 问题答案: 这是-ing由以下命令返回的文件描述符的前100个字节的示例:

  • 问题内容: 我在C#.net中有一个程序,它使用写入1个整数和3个字符串到文件中。 现在,我正在用Java编程(对于Android,这是Java的新手),我必须访问以前使用C#写入文件的数据。 我尝试使用和,但无法获得正确的结果。我通常会得到: java.io.UTFDataFormatException:字节21附近的输入格式错误 或者和我得到的是错误的… 这样做的正确方法是什么? 问题答案:

  • 我需要使用Qt工具将文件读取为二进制代码。在std c中,我是这样做的:

  • 问题内容: 我有一个较长的无符号整数文件(每个64位,0.47GB文件),需要读取并存储在数组中。经过一番思考之后,由于Java中的所有内容都已签名(请纠正我,请纠正我),因此我长时间使用了该类型,我想不出更好的选择了。无论如何,仅需对数组进行排序,因此原始数字的精确值并不是最重要的。我们应该测量排序算法的效率,仅此而已。但是,当我实际要读取文件时(在下面的代码中),我遇到了砖墙。 它会一直持续下

  • 问题内容: 我正在尝试从URLConnection读取二进制文件。当我使用文本文件对其进行测试时,它似乎可以正常工作,但对于二进制文件则不能。发送文件时,我在服务器上使用以下mime类型: 但是到目前为止,似乎没有任何效果。这是我用来接收文件的代码: 问题答案: 我就是这样

  • 问题内容: 我发现用Python读取二进制文件特别困难。你能帮我个忙吗?我需要读取此文件,在Fortran 90中,该文件很容易被读取 详细而言,文件格式为: 如何使用Python阅读?我尝试了一切,但没有成功。我是否有可能在python中使用f90程序,读取此二进制文件,然后保存需要使用的数据? 问题答案: 读取二进制文件内容,如下所示: 然后使用struct.unpack “解压缩”二进制数据