[Go] Read File Line by Line

반응형

Go에서 File를 Line별로 읽는 방법에 대해서 알아보자.

bufio 패키지를 이용해서 해당 작업을 수행할 수 있다.

우선 읽을 파일을 NewScanner 함수로 보내서 Scanner를 반환받자.




Scanner는 개행으로 구분된 텍스트 행의 파일과 같은 데이터를 읽기 위한 편리한 인터페이스를 제공한다.

func (s *Scanner) Scan() bool {}
func (s *Scanner) Text() string {}

Scan 메서드는 Sacnner를 다음 Token으로 이동시킨다. 입력의 끝에 도달하거나 오류가 발생하면 False를 반환한다.

Text 메서드는 Scan 메서드 호출로 생성된 가장 최근 Token를 반환한다.



예제

/path/my/example.txt

line1
line2
line3



Code:

package main

import (
    "bufio"
    "fmt"
    "os"
)

func main() { 
    file, err := os.Open("/path/my/exmaple.txt")
    if err != nil {
        fmt.Println(err)
    }

    scanner := bufio.NewScanner(file)
    for scanner.Scan() {
        fmt.Println(scanner.Text())
    }
    if err := scanner.Err(); err != nil {
        fmt.Println(err)
    }

    file.Close()
}



Output:

line1
line2
line3


참고