Goでファイルを1行ずつ読み込む 質問する

Goでファイルを1行ずつ読み込む 質問する

file.ReadLineGo で関数を見つけることができません。

ファイルを行ごとに読み取るにはどうすればよいでしょうか?

ベストアンサー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() {
...

おすすめ記事