[go] Go 언어의 파일 입출력과 디렉토리 관리 기능

Go 언어는 파일 입출력 및 디렉토리 관리를 위한 풍부한 표준 라이브러리를 제공합니다. 이 기능들은 파일 생성, 읽기, 쓰기, 삭제, 복사, 이동 및 디렉토리 조작과 같은 다양한 작업을 수행할 수 있도록 도와줍니다. 이번 글에서는 Go 언어에서의 파일 입출력 및 디렉토리 관리 방법에 대해 알아보겠습니다.

파일 입출력

Go 언어에서 파일을 열고 핸들링하기 위해서는 os 패키지와 io 패키지를 주로 사용합니다. 아래는 기본적인 파일 읽기 및 쓰기 예제입니다.

파일 읽기

package main

import (
	"fmt"
	"os"
)

func main() {
	file, err := os.Open("example.txt")
	if err != nil {
		fmt.Println("파일을 열 수 없습니다.", err)
		return
	}
	defer file.Close()

	data := make([]byte, 100)
	count, err := file.Read(data)
	if err != nil {
		fmt.Println("파일을 읽을 수 없습니다.", err)
		return
	}
	fmt.Println("파일 내용:", string(data[:count]))
}

파일 쓰기

package main

import (
	"fmt"
	"os"
)

func main() {
	file, err := os.Create("output.txt")
	if err != nil {
		fmt.Println("파일을 생성할 수 없습니다.", err)
		return
	}
	defer file.Close()

	data := []byte("Hello, Go File IO!")
	_, err = file.Write(data)
	if err != nil {
		fmt.Println("파일을 쓸 수 없습니다.", err)
		return
	}
	fmt.Println("파일 쓰기 완료.")
}

디렉토리 관리

Go 언어를 사용하여 디렉토리를 생성하고 파일을 복사하거나 이동하는 등의 작업을 수행할 수 있습니다. 아래는 기본적인 디렉토리 관리 예제입니다.

디렉토리 생성

package main

import (
	"fmt"
	"os"
)

func main() {
	err := os.Mkdir("example_dir", 0755)
	if err != nil {
		fmt.Println("디렉토리 생성에 실패했습니다.", err)
		return
	}
	fmt.Println("디렉토리 생성 완료.")
}

파일 복사

package main

import (
	"fmt"
	"io"
	"os"
)

func main() {
	sourceFile, err := os.Open("source.txt")
	if err != nil {
		fmt.Println("원본 파일을 열 수 없습니다.", err)
		return
	}
	defer sourceFile.Close()

	destinationFile, err := os.Create("destination.txt")
	if err != nil {
		fmt.Println("대상 파일을 생성할 수 없습니다.", err)
		return
	}
	defer destinationFile.Close()

	_, err = io.Copy(destinationFile, sourceFile)
	if err != nil {
		fmt.Println("파일을 복사할 수 없습니다.", err)
		return
	}
	fmt.Println("파일 복사 완료.")
}

마무리

Go 언어는 파일 입출력 및 디렉토리 관리를 위한 풍부한 라이브러리를 제공하여 간편하게 파일 및 디렉토리 작업을 수행할 수 있습니다.

더 많은 자세한 사용법과 기능은 공식 Go 문서를 참고하시기 바랍니다.