GO · 파일/IO
bufio 스트리밍
bufio로 대용량 파일을 라인 단위로 효율적으로 읽습니다. 메모리를 절약하는 스트리밍 처리입니다.
파일/IO중급bufioscannerstreamingreadline
핵심 설명
bufio로 대용량 파일을 라인 단위로 효율적으로 읽습니다. 메모리를 절약하는 스트리밍 처리입니다.
Go code
package main
import (
"bufio"
"fmt"
"os"
"strings"
)
func main() {
// 문자열 리더로 데모
input := "첫 번째 줄\n두 번째 줄\n세 번째 줄\n"
reader := bufio.NewReader(strings.NewReader(input))
for {
line, err := reader.ReadString('\n')
line = strings.TrimRight(line, "\n")
if line != "" {
fmt.Println("읽음:", line)
}
if err != nil { break }
}
// Scanner (줄 단위 읽기에 최적)
scanner := bufio.NewScanner(strings.NewReader(input))
scanner.Buffer(make([]byte, 1024*1024), 1024*1024) // 최대 1MB
lineNum := 0
for scanner.Scan() {
lineNum++
fmt.Printf("%d: %s\n", lineNum, scanner.Text())
}
if err := scanner.Err(); err != nil {
fmt.Fprintln(os.Stderr, "읽기 에러:", err)
}
}학습 팁
bufio.Scanner의 기본 버퍼는 64KB입니다. 긴 줄이 있으면 scanner.Buffer()로 크기를 늘리세요.
주의할 점
Scanner.Err()를 확인하지 않으면 버퍼 초과 등의 에러를 놓칩니다. 루프 후 반드시 에러를 검사하세요.
자주 묻는 질문
bufio 스트리밍란 무엇인가요?
bufio 로 대용량 파일을 라인 단위로 효율적으로 읽습니다. 메모리를 절약하는 스트리밍 처리입니다.
bufio 스트리밍 학습 시 주의할 점은 무엇인가요?
Scanner.Err() 를 확인하지 않으면 버퍼 초과 등의 에러를 놓칩니다. 루프 후 반드시 에러를 검사하세요.
Continue Learning
Go 학습을 이어가세요
총 200개의 독립 HTML 학습 문서 중 하나입니다. 각 문서는 고유 URL과 canonical 메타데이터를 가집니다.