[go] bufio 패키지를 사용한 큰 파일 처리

Go 언어를 사용하여 큰 파일을 효율적으로 처리해야 하는 경우가 있습니다. bufio 패키지는 이러한 작업을 수행하는 데 유용한 기능을 제공합니다.

bufio 패키지

Go 언어의 bufio 패키지는 입력 및 출력을 버퍼링하는 데 사용됩니다. 이를 통해 입출력 속도를 향상시키고, 작은 조각 단위로 데이터를 다루는 데 용이합니다.

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

큰 파일 읽기

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

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

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

    if err := scanner.Err(); err != nil {
        fmt.Println("파일 읽기 오류:", err)
    }
}

이 예제는 largefile.txt 파일을 열고, Scanner를 사용하여 파일을 한 줄씩 읽어들입니다.

큰 파일 쓰기

bufio 패키지를 사용하여 큰 파일에 데이터를 쓰는 방법도 간단합니다.

func main() {
    file, err := os.Create("output.txt")
    if err != nil {
        fmt.Println("파일 생성 오류:", err)
        return
    }
    defer file.Close()

    writer := bufio.NewWriter(file)
    _, err = writer.WriteString("This is a line\n")
    if err != nil {
        fmt.Println("파일 쓰기 오류:", err)
        return
    }

    err = writer.Flush()
    if err != nil {
        fmt.Println("Flush 오류:", err)
    }
}

위의 예제에서는 output.txt 파일을 만들고, BufferedWriter를 사용하여 데이터를 파일에 작성합니다.

결론

Go 언어의 bufio 패키지는 큰 파일을 효율적으로 처리하는 데 유용한 기능을 제공합니다. 파일을 읽거나 쓸 때 속도와 성능을 높이기 위해 bufio 패키지를 적극적으로 활용할 수 있습니다.

이로써 Go 언어에서 bufio 패키지를 사용한 큰 파일 처리에 대한 간단한 사용법을 알아보았습니다.