[go] bufio 패키지를 사용한 텍스트 처리

Go 프로그래밍 언어에서 bufio 패키지는 입력 및 출력을 버퍼링하고 처리하는 데 유용한 기능을 제공합니다. 이를 사용하여 파일에서 텍스트를 읽고 쓸 때 메모리 사용량을 줄이고 효율적으로 처리할 수 있습니다.

bufio 패키지 소개

bufio 패키지는 입출력 작업을 지원하는데 도움을 주는 기능들을 제공합니다. 이를 통해 파일이나 네트워크 연결 등과 같은 소스에서 데이터를 효율적으로 읽고 쓸 수 있습니다.

bufio.NewReader 함수

bufio.NewReader 함수는 주어진 io.Reader를 버퍼링하는 Reader를 반환합니다. 이를 통해 새로운 Reader를 생성하고 버퍼 크기를 지정할 수 있습니다.

package main

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

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

	reader := bufio.NewReader(file)
	// bufio를 사용한 데이터 읽기 작업 수행
}

bufio.NewWriter 함수

bufio.NewWriter 함수는 주어진 io.Writer를 버퍼링하는 Writer를 반환합니다. 이를 통해 새로운 Writer를 생성하고 버퍼 크기를 지정할 수 있습니다.

package main

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

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

	writer := bufio.NewWriter(file)
	// bufio를 사용한 데이터 쓰기 작업 수행
}

bufio 패키지를 사용한 텍스트 처리 예제

다음은 bufio 패키지를 사용하여 파일에서 텍스트를 한 줄씩 읽고 쓰는 예제 코드입니다.

package main

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

func main() {
	// 파일 열기
	file, err := os.Open("example.txt")
	if err != nil {
		fmt.Println("Error:", err)
		return
	}
	defer file.Close()

	// bufio 패키지를 이용한 파일 읽기
	scanner := bufio.NewScanner(file)
	for scanner.Scan() {
		line := scanner.Text()
		fmt.Println(line)
	}

	// bufio 패키지를 이용한 파일 쓰기
	outputFile, err := os.Create("output.txt")
	if err != nil {
		fmt.Println(err)
		return
	}
	defer outputFile.Close()

	writer := bufio.NewWriter(outputFile)
	_, err = writer.WriteString("This is a sample text.")
	if err != nil {
		fmt.Println(err)
		return
	}
	writer.Flush()
}

위의 코드는 “example.txt” 파일을 열어 한 줄씩 읽고, “output.txt” 파일에 “This is a sample text.”를 쓰는 예제입니다.

이처럼 bufio 패키지를 사용하면 파일에서 데이터를 효율적으로 읽고 쓸 수 있으며, 메모리 사용량을 최적화할 수 있습니다.

결론

Go의 bufio 패키지는 파일 등의 소스에서 데이터를 버퍼링하여 처리하는데 유용한 기능을 제공합니다. 파일 처리 및 네트워크 통신과 같은 다양한 상황에서 데이터를 효율적으로 읽고 쓰기 위해 bufio 패키지를 활용할 수 있습니다.