推荐使用bufio.Scanner逐行读取文本文件,它内存友好、自动处理换行符且默认单行上限64KB;需超长行或自定义分隔符时改用bufio.Reader配合ReadString/ReadBytes。

go语言处理文本文件的逐行读取,推荐使用 bufio.Scanner,它内存友好、简洁安全,适合大多数场景;若需更精细控制(如超长行、自定义分隔符或错误恢复),可选用 bufio.Reader 配合 ReadString 或 ReadLine。
用 bufio.Scanner 逐行读取(推荐默认方式)
Scanner 是 Go 标准库为行读取优化的工具,自动处理换行符、忽略末尾 r,且默认单行上限 64KB(可调)。它不返回原始错误,而是通过 Err() 检查最终状态。
- 打开文件后传入
bufio.NewScanner - 用
Scan()循环读取,每次调用加载下一行到内部缓冲区 - 用
Text()获取字符串(不含换行符),或Bytes()获取字节切片 - 循环结束后调用
Err()判断是否因 I/O 错误提前终止
示例:
file, _ := os.Open(“data.txt”)
defer file.Close()
scanner := bufio.NewScanner(file)
for scanner.Scan() {
line := scanner.Text() // 或 scanner.Bytes()
process(line)
}
if err := scanner.Err(); err != nil {
log.Fatal(err)
}
处理超长行或自定义分隔符
<p>默认 <code>Scanner 行长度限制为 64KB。若文件含超长日志行或需按其他字符(如 |、<p>默认 <code>Scanner 行长度限制为 64KB。若文件含超长日志行或需按其他字符(如 |、