📅  最后修改于: 2023-12-03 15:31:00.242000             🧑  作者: Mango
在 Go 编程语言中,读取文件是一个常见的操作。有时候我们需要逐行读取文本文件中的内容,以便对每一行进行处理。在本文中,我们将学习如何使用 Go 逐行读取文件。
要逐行读取文件,我们可以使用 bufio
包中的 NewScanner
函数,该函数返回一个 Scanner
实例,它可以从一个 io.Reader
中扫描标记,并将其分解为单独的行。
package main
import (
"bufio"
"fmt"
"os"
)
func main() {
file, err := os.Open("data.txt")
if err != nil {
panic(err)
}
defer file.Close()
scanner := bufio.NewScanner(file)
for scanner.Scan() {
line := scanner.Text()
fmt.Println(line)
}
if err := scanner.Err(); err != nil {
panic(err)
}
}
上面的代码打开一个名为 data.txt
的文件,并使用 bufio.NewScanner
函数返回一个扫描器实例。在 for
循环中,我们可以使用 scanner.Text()
函数获取文本文件中的每一行。当我们到达文件的结尾时,scanner.Scan()
函数会返回 false
,从而退出循环。
stdin
我们也可以将 bufio.NewScanner
函数的参数设置为 os.Stdin
,以从标准输入读取每一行。
package main
import (
"bufio"
"fmt"
"os"
)
func main() {
scanner := bufio.NewScanner(os.Stdin)
for scanner.Scan() {
line := scanner.Text()
fmt.Println(line)
}
if err := scanner.Err(); err != nil {
panic(err)
}
}
上面的代码将每一行输入作为文本扫描,并将其打印到控制台中。
逐行读取文件是 Go 编程中一个基本的任务,你可以使用 bufio.NewScanner
函数来实现。务必在循环结束后检查 scanner.Err()
函数是否返回错误。