[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 패키지를 활용할 수 있습니다.