我对 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/