📌  相关文章
📜  go 逐行读取文件 - Go 编程语言(1)

📅  最后修改于: 2023-12-03 15:31:00.242000             🧑  作者: Mango

Go 逐行读取文件

在 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() 函数是否返回错误。