我完全是新手,我正在try 读取一个二进制文件,一次读取一个字节或几个字节.文档帮助不大,我找不到任何教程或简单的示例(顺便说一下,Google怎么会给他们的语言起这样一个无法谷歌搜索的名称呢?)基本上,我如何打开一个文件,然后将一些字节读入缓冲区?有什么建议吗?
我完全是新手,我正在try 读取一个二进制文件,一次读取一个字节或几个字节.文档帮助不大,我找不到任何教程或简单的示例(顺便说一下,Google怎么会给他们的语言起这样一个无法谷歌搜索的名称呢?)基本上,我如何打开一个文件,然后将一些字节读入缓冲区?有什么建议吗?
对于操纵文件,os
软件包是你的朋友:
f, err := os.Open("myfile")
if err != nil {
panic(err)
}
defer f.Close()
有关如何打开文件的更多控制,请参见os.OpenFile()
而不是(doc).
读取文件的方法有很多种.os.Open
返回的os.File
类型(上例中的f
)实现了io.Reader
接口(它有一个具有正确签名的Read()
方法),它可以直接用来读取缓冲区([]byte
)中的一些数据,也可以包装在缓冲读取器(bufio.Reader
类型)中.
具体地,对于二进制数据,encoding/binary
包对于将字节序列读入某些类型化的数据 struct 可能是有用的.你可以在Go doc here里看到一个例子.binary.Read()
函数可以与使用os.Open()
函数读取的文件一起使用,因为正如我所提到的,它是io.Reader
.
还有易于使用的io/ioutil
包,它允许您一次读取一个字节片段中的整个文件(ioutil.ReadFile()
,它接受文件名,因此您甚至不必自己打开/关闭文件),或者ioutil.ReadAll()
,它接受io.Reader
并返回包含整个文件的一段字节.这是doc on ioutil美元.
最后,正如其他人提到的,你可以用"golang"搜索围棋语言,你应该能找到你需要的所有东西.golang-nuts mailing list也是一个寻找答案的好地方(在发帖之前一定要先搜索,很多东西都已经有答案了).要查找第三方软件包,请查看godoc.org网站.
嗯