本文介绍使用 encoding/gob 包读写二进制文件的方法。
gob是Golang自带的一个数据结构序列化的编码/解码工具,和JSON、XML、Google 的 protocol buffers类似。gob编码使用Encoder,解码使用Decoder。一种典型的应用场景就是RPC(remote procedure calls)。
接下来演示一下序列化数据后保存到本地,再反序列化本地的数据。
序列化数据后保存到本地:
package main
import (
"encoding/gob"
"fmt"
"os"
)
func main() {
data := "测试读写二进制文件"
file, err := os.Create("bin") // 创建文件
if err != nil {
fmt.Println("文件创建失败", err.Error())
return
}
defer file.Close()
encoder := gob.NewEncoder(file)
err = encoder.Encode(data)
if err != nil {
fmt.Println("编码错误", err.Error())
return
}
}
反序列化本地的数据
package main
import (
"encoding/gob"
"fmt"
"os"
)
func main() {
file, err := os.Open("bin")
if err != nil {
fmt.Println("文件打开失败", err.Error())
return
}
defer file.Close()
decoder := gob.NewDecoder(file)
var data string
err = decoder.Decode(&data)
if err != nil {
fmt.Println("解码失败", err.Error())
return
}
fmt.Println(data)
}
更多关于 encoding/gob 的内容请参考此包的源代码。