快捷搜索: 王者荣耀 脱发

Golang读写二进制文件方法(一)

本文介绍使用 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 的内容请参考此包的源代码。

本文介绍使用 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 的内容请参考此包的源代码。
经验分享 程序员 微信小程序 职场和发展