Golang 如何以字符串形式逐行读取文件
使用 bufio包的Scanner 来逐行读取文件。假设文本文件名为sample.txt,并且文件中的内容如下:
GO语言是一种静态编译的编程语言,它是一种开源语言。它由Rob Pike、Ken Thompson和Robert Grieserner在Google设计。它也被称为Golang。Go语言是一种面向大规模复杂软件构建的通用编程语言。
package main
import (
"bufio"
"fmt"
"log"
"os"
)
func main() {
// os.Open()以只读模式打开特定文件,返回os类型的指针。
file, err := os.Open("sample.txt")
if err != nil {
log.Fatalf("failed to open")
}
// bufio.NewScanner()函数被调用,其中os.File对象作为参数传递,并返回一个bufio.Scanner对象,该对象进一步用于bufio.Scanner.Split()方法。
scanner := bufio.NewScanner(file)
// bufio.ScanLines作为bufio.Scanner.Split()方法的输入,然后使用bufio.Scanner.Scan()方法向前扫描到每个新行。
scanner.Split(bufio.ScanLines)
var text []string
for scanner.Scan() {
text = append(text, scanner.Text())
}
// 在os.File对象上调用os.File.Close()方法来关闭文件
file.Close()
// 然后循环通过并打印每个切片值。
for _, each_ln := range text {
fmt.Println(each_ln)
}
}
输出: