[go] go 언어에서 파일 경로 다루기

Go 언어에서 파일 경로를 다루는 것은 매우 중요합니다. 이를 통해 파일을 열거나 생성하고, 디렉터리를 탐색하고, 파일 이름을 추출하거나 변경하는 등의 작업을 수행할 수 있습니다. Go는 표준 라이브러리를 통해 파일 경로 다루기를 위한 많은 유용한 기능을 제공합니다.

파일 경로 파싱

Go 언어에서 파일 경로를 파싱하려면 path/filepath 패키지를 사용할 수 있습니다. 이 패키지에는 파일 경로를 다루기 위한 다양한 함수들이 포함되어 있으며, 이를 활용해 파일 이름, 디렉터리 경로 등을 추출하거나 조작할 수 있습니다.

예를 들어, 다음은 파일 경로에서 디렉터리 경로와 파일 이름을 추출하는 예제코드입니다.

package main

import (
	"fmt"
	"path/filepath"
)

func main() {
	path := "/home/user/example.txt"
	dir := filepath.Dir(path)
	file := filepath.Base(path)

	fmt.Println("디렉터리:", dir)
	fmt.Println("파일 이름:", file)
}

경로 연결

때로는 여러 디렉터리 경로를 결합해야 하는 경우가 있습니다. Go 언어에서는 path/filepath 패키지의 Join 함수를 사용하여 이를 수행할 수 있습니다. 이 함수를 사용해 디렉터리 경로를 결합하면 운영 체제에 맞는 올바른 경로 구분자가 적용됩니다.

아래는 Join 함수를 사용하여 두 개의 디렉터리 경로를 결합하는 예제입니다.

package main

import (
	"fmt"
	"path/filepath"
)

func main() {
	path1 := "/home/user"
	path2 := "documents"
	fullPath := filepath.Join(path1, path2)

	fmt.Println("결합된 경로:", fullPath)
}

절대 경로 확인

프로그램에서 상대 경로를 절대 경로로 변환해야 할 때가 있습니다. Go 언어에서는 path/filepath 패키지의 Abs 함수를 사용하여 이를 수행할 수 있습니다.

다음은 Abs 함수를 사용하여 상대 경로를 절대 경로로 변환하는 예제입니다.

package main

import (
	"fmt"
	"path/filepath"
)

func main() {
	relativePath := "documents/example.txt"
	absPath, err := filepath.Abs(relativePath)
	if err != nil {
		fmt.Println("에러 발생:", err)
		return
	}

	fmt.Println("절대 경로:", absPath)
}

결론

Go 언어의 path/filepath 패키지를 사용하면 파일 경로를 다루는 다양한 작업을 간편하게 수행할 수 있습니다. 이러한 기능들을 활용하여 파일 시스템과 상호 작용하는 프로그램을 개발할 수 있습니다.