file.ReadLine
Go で関数を見つけることができません。
ファイルを行ごとに読み取るにはどうすればよいでしょうか?
ベストアンサー1
Go 1.1以降では、これを最も簡単に行う方法は、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
。
注意点が1つあります。スキャナは65536文字を超える行ではエラーになります。行の長さが64Kを超えることが分かっている場合は、Buffer()
スキャナーの容量を増やす方法:
...
scanner := bufio.NewScanner(file)
const maxCapacity int = longLineLen // your required line length
buf := make([]byte, maxCapacity)
scanner.Buffer(buf, maxCapacity)
for scanner.Scan() {
...