登录
首页 >  Golang >  Go教程

Golangbufio.Scanner逐行读取文件教程

时间:2026-01-29 19:38:55 239浏览 收藏

各位小伙伴们,大家好呀!看看今天我又给各位带来了什么文章?本文标题《Golang用bufio.Scanner逐行读取文件方法》,很明显是关于Golang的文章哈哈哈,其中内容主要会涉及到等等,如果能帮到你,觉得很不错的话,欢迎各位多多点评和分享!

使用bufio.Scanner可高效逐行读取文件。先用os.Open打开文件并创建Scanner,通过for scanner.Scan()循环读取每行内容,scanner.Text()获取字符串,结束后检查scanner.Err()确保无I/O错误;若处理超长行,需调用scanner.Buffer设置更大缓冲区,如1MB,以避免报错。该方法适合大文件或按行解析场景。

Golang如何使用bufio.Scanner逐行读取文件

在Go语言中,使用bufio.Scanner逐行读取文件是一种高效且常用的方式。它能自动处理行的分割,适合处理大文件或需要按行解析的场景。

打开文件并创建Scanner

先通过os.Open打开文件,然后用bufio.NewScanner包装文件句柄:

file, err := os.Open("example.txt")
if err != nil {
    log.Fatal(err)
}
defer file.Close()
<p>scanner := bufio.NewScanner(file)
</p>

逐行读取内容

调用scanner.Scan()循环读取每一行,用scanner.Text()获取当前行的字符串:

for scanner.Scan() {
    line := scanner.Text()
    fmt.Println(line)
}
<p>if err := scanner.Err(); err != nil {
log.Fatal(err)
}
</p>
说明:
  • Scan()返回bool,读到末尾或出错时停止
  • Text()返回当前行的内容(不含换行符)
  • 循环结束后建议检查scanner.Err(),排除I/O错误

处理大文件或自定义缓冲区

默认情况下,Scanner的缓冲区大小有限(64KB),读取超长行可能报错。可通过Scanner.Buffer方法扩展缓冲区:

const maxCap = 1024 * 1024 // 1MB
buf := make([]byte, maxCap)
scanner.Buffer(buf, maxCap)

这样可以安全读取更长的单行内容。

基本上就这些。配合os.Opendefer Closebufio.Scanner是处理文本行的简洁方案。

今天带大家了解了的相关知识,希望对你有所帮助;关于Golang的技术知识我们会一点点深入介绍,欢迎大家关注golang学习网公众号,一起学习编程~

前往漫画官网入口并下载 ➜
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>