久しぶりに A Tour of Go をやって Go を復習した。大量のテキストデータの処理に Go 言語が使えないかと思ったからだ。
テキストファイルを一行ずつ読み込むことは、テキスト処理の基本中の基本である。千里の道も一歩から、である。
この記事を書くにあたって、この記事を全面的に参考にさせていただいた。深謝。
bufio.Scanner
を使うのがコツらしい。
行指向でなくてよいなら、この記事も参考になる。
test.txt
これはテストです。
よろしくね。
hello world!
read_text_file.go
package main
import (
"bufio"
"fmt"
"os"
)
func main() {
filename := "test.txt"
fp, err := os.Open(filename)
if err != nil {
fmt.Println(err)
return
}
defer fp.Close()
scanner := bufio.NewScanner(fp)
for scanner.Scan() {
fmt.Println(scanner.Text())
}
if err = scanner.Err(); err != nil {
fmt.Println(err)
return
}
}