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

标签 file-io go

我对 Go 完全陌生,我正在尝试读取一个二进制文件,一次一个字节或几个字节。该文档没有多大帮助,我找不到任何教程或简单示例(顺便说一句,Google 怎么会给他们的语言起这样一个无法用谷歌搜索的名字?)。基本上,我怎样才能打开一个文件,然后将一些字节读入缓冲区?有什么建议吗?

最佳答案

对于操作文件,os 包是你的 friend :

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

要更好地控制文件的打开方式,请参阅 os.OpenFile() 代替 (doc) .

对于读取文件,有很多方法。 os.Open(上例中的f)返回的os.File类型实现了io.Reader 接口(interface)(它有一个带有正确签名的 Read() 方法),它可以直接用于读取缓冲区中的一些数据(一个 []byte)或者它也可以包装在缓冲阅读器中(类型 bufio.Reader)。

对于二进制数据,encoding/binary 包非常有用,可以将字节序列读入某种类型化的数据结构中。您可以在 Go doc here 中查看示例. binary.Read() 函数可以与使用 os.Open() 函数读取的文件一起使用,因为正如我所提到的,它是一个 io。阅读器.

还有一个简单易用的io/ioutil包,它允许你在一个 byte slice 中一次读取整个文件(ioutil.ReadFile(),它采用文件名,因此您甚至不必自己打开/关闭文件),或 ioutil.ReadAll() 采用 io.Reader 并返回包含整个文件的字节 slice 。这是doc on ioutil .

最后,正如其他人所提到的,您可以使用“golang”在 Google 上搜索 Go 语言,您应该会找到所需的一切。 golang-nuts mailing list也是一个寻找答案的好地方(发帖前一定要先搜索一下,很多东西已经回答过了)。要查找第三方软件包,请查看 godoc.org网站。

HTH

关于file-io - 如何在 Go 中读取二进制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14514201/

相关文章:

c - 纯文本文件或加密文件(C编程)

c++ - Stringstream 没有按需要阅读

python - 有没有办法为python读写的所有文件设置编码

ssl - 请求客户端证书进行身份验证

json - 不要将不需要的 JSON 键值读入内存

go - 使用反射检索结构变量的注解

python - 如何一次读取文件 N 行?

java - 快速写入 : Memory-Mapped file versus BufferedWriter

windows - 确定当前进程是否在 WOW64 中运行或不在 Go 中

go - golang RGBA.RGBA() 方法为什么使用 |和 <<?