回答

收藏

在 Go 中逐行读取文件

技术问答 技术问答 230 人阅读 | 0 人回复 | 2023-09-12

我无法file.ReadLine在 Go 找到函数。我能找出如何快速写一个,但我只想知道我是否忽略了这里的一些东西。如何逐行阅读文件?
& R- a6 n5 y3 Y: y                                                                , ?7 b" i& [1 @2 ^$ G
    解决方案:                                                                % E' R, e4 |- ?2 O$ o
                                                                在 Go 1.在1 和更新版本中,最简单的方法是使用它bufio.Scanner. 这是一个从文件中读取行的简单例子:
" f  ]  z- E- K3 Z1 m8 u

    $ s+ `: b  v) J. j3 z) H
  • 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)  code]这是Reader最干净的逐干净的方法。
    / S8 @6 I: Z* X; D+ a! L2 V: q
  • 有一个警告:扫描仪在行驶超过 6536个字符时会出错。如果你知道你的行长大于 64K,请使用以下Buffer()增加扫描仪容量的方法:[code]...scanner := bufio.NewScanner(file)const maxCapacity = longLineLen  // your required line lengthbuf := make([]byte,maxCapacity)scanner.Buffer(buf,maxCapacity)for scanner.Scan() {...
    # r. U9 Q+ [% N& }
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则