我无法file.ReadLine在 Go 中找到函数。我可以弄清楚如何快速写一个,但我只是想知道我是否在这里忽略了一些东西。如何逐行读取文件?
file.ReadLine
在 Go 1.1 和更新版本中,最简单的方法是使用bufio.Scanner. 这是一个从文件中读取行的简单示例:
bufio.Scanner
package main import ( "bufio" "fmt" "log" "os" ) func main() { file, err := os.Open("/path/to/file.txt") if err != nil { log.Fatal(err) } defer file.Close() scanner := bufio.NewScanner(file) // optionally, resize scanner's capacity for lines over 64K, see next example for scanner.Scan() { fmt.Println(scanner.Text()) } if err := scanner.Err(); err != nil { log.Fatal(err) } }
这是Reader逐行读取的最干净的方式。
Reader
有一个警告:扫描仪会在行超过 65536 个字符时出错。如果您知道您的行长度大于 64K,请使用以下Buffer()方法增加扫描仪的容量:
Buffer()
... scanner := bufio.NewScanner(file) const maxCapacity = longLineLen // your required line length buf := make([]byte, maxCapacity) scanner.Buffer(buf, maxCapacity) for scanner.Scan() { ...