在 Go 1.1 和更新版本中,最简单的方法是使用
bufio.Scanner. 这是一个从文件中读取行的简单示例:
package mainimport ( "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逐行读取的最干净的方式。
有一个警告:扫描仪会在行超过 65536 个字符时出错。如果您知道您的行长度大于 64K,请使用以下
Buffer()方法增加扫描仪的容量:
...scanner := bufio.NewScanner(file)const maxCapacity = longLineLen // your required line lengthbuf := make([]byte, maxCapacity)scanner.Buffer(buf, maxCapacity)for scanner.Scan() {...
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)