[go] bufio 패키지를 이용한 파일 입출력 처리

Go 언어에서 파일을 읽고 쓰기 위해 bufio 패키지를 사용할 수 있습니다. bufio 패키지는 버퍼링된 I/O를 제공하여 입출력 성능을 향상시킬 수 있으며, 특히 작은 파일을 읽거나 쓸 때 유용합니다. 이번 포스트에서는 bufio 패키지를 사용하여 파일을 읽고 쓰는 방법에 대해 알아보겠습니다.

파일 읽기(File Reading) with bufio

먼저, bufio 패키지를 사용하여 파일을 읽는 방법을 살펴보겠습니다. 다음은 파일을 읽어서 표준 출력에 출력하는 간단한 예제 코드입니다.

package main

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

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

	scanner := bufio.NewScanner(file)
	for scanner.Scan() {
		fmt.Println(scanner.Text())
	}

	if err := scanner.Err(); err != nil {
		panic(err)
	}
}

위 코드에서 os.Open 함수를 사용하여 파일을 열고, bufio.NewScanner 함수를 통해 스캐너를 생성합니다. 그리고 나서 scanner.Scan 함수를 사용하여 파일의 내용을 한 줄씩 읽고, scanner.Text 메서드를 사용하여 각 줄의 내용을 출력합니다.

파일 쓰기(File Writing) with bufio

이제 파일을 쓰는 방법에 대해 알아보겠습니다. 다음은 표준 입력에서 입력을 받아 파일에 쓰는 예제 코드입니다.

package main

import (
	"bufio"
	"os"
)

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

	writer := bufio.NewWriter(file)
	scanner := bufio.NewScanner(os.Stdin)

	for scanner.Scan() {
		line := scanner.Text() + "\n"
		_, err := writer.WriteString(line)
		if err != nil {
			panic(err)
		}
	}

	if err = writer.Flush(); err != nil {
		panic(err)
	}
}

위 코드에서 os.Create 함수를 사용하여 파일을 생성하고, bufio.NewWriter 함수를 통해 파일에 작성하기 위한 writer를 생성합니다. 그리고 나서 표준 입력에서 받은 내용을 한 줄씩 파일에 씁니다.

Go 언어에서 bufio 패키지를 사용하여 파일을 읽고 쓰는 방법에 대해 알아보았습니다. bufio 패키지를 사용하면 입출력 성능을 최적화할 수 있으며, 파일 처리 작업을 보다 효율적으로 수행할 수 있습니다.

더 많은 정보를 원하실 경우 Go 공식 문서를 참고하시기 바랍니다.