본문으로 건너뛰기

파일 읽기, 파일을 한줄씩 읽기

Go if err != nil { log.Fatal(err) } fmt.Println( string(rbuf) )

가장 간편하게 파일을 읽어 올 수 있는 방법입니다.

좀더 확장해서 .. 텍스트 파일을 한줄씩 읽어 드리려면 

Go if err != nil { log.Fatal(err) } defer file.Close() scan := bufio.NewScanner(file) for scan.Scan() { fmt.Println(scan.Text()) } err = scan.Err() if err != nil { log.Fatal(err) }

이렇게 NewReader 를 사용하시거나

Go
  file, err := os.Open("test.txt")
  
  if err != nil {
    panic(err)
  }
  
  defer file.Close()

  reader := bufio.NewReader(file)
  
  for {
    line, _, err := reader.ReadLine()
        
    if err != nil {
      break
    }
    
    fmt.Println(line)
  }

이런식으로 NewReader 로 ReadLine 함수를 쓰셔도 됩니다. 한가지 주의 하실점은 ReadLine 함수의 리턴값이 3개인데 예제에선 두번째 값을 _로 무시하였지만 저 값은 isPrefix 라는 값으로 만약에 파일을 읽는 중에 라인의 중간까지만 읽힌 경우 읽혀진게 완전히 한 줄이 읽혀진게 아님을 알려주는 값입니다. 

텍스트 파일을 대상으로 사용한 예라 무스하였습니다만. 만약 정적인 파일이 아니라 스트림 데이터에 대해서 이 방식을 쓸 경우에는 isPrefix 값에 따른 처리를 추가 하셔야 합니다.