Go语言读取二进制文件有三种常用方式:1. 小文件用os.Open配合io.ReadAll一次性读取;2. 大文件用bufio.Reader分块流式读取防内存溢出;3. 结构化数据用encoding/binary按字节序解析。

在Go语言中读取二进制文件是一个常见需求,尤其在处理图像、音频、序列化数据或网络协议时。Go提供了标准库支持高效、安全地操作二进制数据。下面介绍几种常用的实践方式。
最简单的方式是使用os.Open打开文件,然后通过io.ReadAll一次性读取全部内容到字节切片中。
适用于小文件,代码简洁:
<strong>package main
import (
"fmt"
"io"
"os"
)
func main() {
file, err := os.Open("data.bin")
if err != nil {
panic(err)
}
defer file.Close()
data, err := io.ReadAll(file)
if err != nil {
panic(err)
}
fmt.Printf("读取到 %d 字节\n", len(data))
// 处理 data []byte
}</strong>对于大文件,一次性加载到内存可能造成内存溢出。推荐使用bufio.Reader按块读取。
立即学习“go语言免费学习笔记(深入)”;
<strong>package main
import (
"bufio"
"fmt"
"os"
)
func main() {
file, err := os.Open("large.bin")
if err != nil {
panic(err)
}
defer file.Close()
reader := bufio.NewReader(file)
buffer := make([]byte, 1024) // 每次读取1KB
for {
n, err := reader.Read(buffer)
if n > 0 {
// 处理 buffer[0:n]
fmt.Printf("处理了 %d 字节\n", n)
}
if err == io.EOF {
break
}
if err != nil {
panic(err)
}
}
}</strong>如果二进制文件包含结构化数据(如C结构体),可以用encoding/binary包进行解码。
第一步】:将安装包中所有的文件夹和文件用ftp工具以二进制方式上传至服务器空间;(如果您不知如何设置ftp工具的二进制方式,可以查看:(http://www.shopex.cn/support/qa/setup.help.717.html)【第二步】:在浏览器中输入 http://您的商店域名/install 进行安装界面进行安装即可。【第二步】:登录后台,工具箱里恢复数据管理后台是url/sho
0
假设文件中存储的是一个整数和一个字符串:
<strong>package main
import (
"encoding/binary"
"fmt"
"os"
)
type Header struct {
ID uint32
Size uint32
}
func main() {
file, err := os.Open("struct.bin")
if err != nil {
panic(err)
}
defer file.Close()
var header Header
err = binary.Read(file, binary.LittleEndian, &header)
if err != nil {
panic(err)
}
fmt.Printf("ID: %d, Size: %d\n", header.ID, header.Size)
}</strong>注意:binary.Read会根据结构体字段顺序依次读取对应字节数,并按照指定字节序(LittleEndian或BigEndian)解析。
为了验证读取逻辑,可以先写入一些测试数据:
<strong>func writeSample() {
file, _ := os.Create("sample.bin")
defer file.Close()
binary.Write(file, binary.LittleEndian, uint32(123))
binary.Write(file, binary.LittleEndian, uint32(4096))
}</strong>Go中的二进制文件处理灵活且高效。选择哪种方式取决于文件大小和数据结构。小文件可用io.ReadAll,大文件建议用bufio流式读取,结构化数据配合encoding/binary解析。基本上就这些。
以上就是如何在Golang中读取二进制文件_Golang二进制文件处理实践的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号