[go] bufio 패키지를 이용한 성능최적화된 파일 입출력 처리

Go 언어에서 파일을 읽거나 쓰는 동작은 프로그램의 성능을 위해 신경을 써야 할 중요한 부분 중 하나입니다. bufio 패키지는 입출력 속도를 향상시키기 위해 버퍼링을 제공합니다. 이번 글에서는 Go 언어에서 bufio 패키지를 이용하여 파일을 읽고 쓰는 방법에 대해 알아보겠습니다.

bufio 패키지 소개

Go 언어 공식 문서에 따르면 bufio 패키지는 입출력을 버퍼링하는 기능을 제공합니다. 버퍼링은 입출력 속도를 향상시키기 위해 데이터를 임시로 저장하는 메모리 공간을 말합니다.

bufio 패키지는 Reader와 Writer를 제공하여 파일 또는 다른 소스로부터 데이터를 읽고 쓰는데 효과적으로 사용될 수 있습니다.

파일 읽기 예제

다음은 bufio 패키지를 이용하여 파일을 읽는 예제입니다.

package main

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

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

	reader := bufio.NewReader(file)
	for {
		line, err := reader.ReadString('\n')
		if err != nil {
			break
		}
		fmt.Print(line)
	}
}

위의 예제에서는 os.Open 함수를 통해 파일을 열고, bufio.NewReader를 사용하여 파일로부터 데이터를 읽어와 출력합니다.

파일 쓰기 예제

다음은 bufio 패키지를 이용하여 파일을 쓰는 예제입니다.

package main

import (
	"bufio"
	"os"
)

func main() {
	file, err := os.Create("example.txt")
	if err != nil {
		panic(err)
	}
	defer file.Close()

	writer := bufio.NewWriter(file)
	_, err = writer.WriteString("Hello, World!")
	if err != nil {
		panic(err)
	}
	writer.Flush()
}

위의 예제에서는 os.Create 함수를 통해 파일을 생성하고, bufio.NewWriter를 사용하여 파일에 데이터를 쓴 후 버퍼를 비워줍니다.

마무리

Go의 bufio 패키지를 이용하면 파일 입출력의 성능을 향상시키는데 유용하게 활용할 수 있습니다. bufio 패키지에 대한 더 자세한 정보는 Go 언어 공식 문서를 참고하시기 바랍니다.