go 활용/File처리

File에서 Line 단위로 데이터 읽기

자연&사람 2022. 1. 7. 20:04

package main

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

func main() {

    // func os.Open(name string) (*File, error)
    // 파일 열기
    file, err := os.Open("sample.txt")

    // 파일 open에 실패한 경우
    if err != nil {
        log.Fatal(err)
    }

    // func bufio.NewScanner(r io.Reader) *Scanner
    // 라인 단위로 읽을 Scanner 생성 
    scanner := bufio.NewScanner(file)

    // func (s *Scanner) Scan() bool
    // 1줄 읽기 성공 여부 확인
    for scanner.Scan() {
        // func (s *Scanner) Text() string
        // 방금 읽은 1줄의 문자열을 얻는다.
        fmt.Println(scanner.Text())
    }
    
    // func (s *Scanner) Err() error
    if err := scanner.Err(); err != nil {
        log.Fatal(err)
    }

    // func (f *File) Close() error
    // open된 파일 close
    file.Close()
}