[go] 파일 경로 간 표준화 및 정규화

파일 경로 표준화

파일 경로 표준화는 일반적으로 경로에 사용되는 구분자(슬래시 ‘/’, 역슬래시 ‘' 등) 및 상대 경로 경로(상대 경로 ‘../’ 등)를 표준 형식으로 변환하는 과정을 말합니다. Go 언어에서는 path/filepath 패키지의 Clean 함수를 사용하여 파일 경로를 표준화할 수 있습니다. 다음은 간단한 예제 코드입니다.

package main

import (
	"fmt"
	"path/filepath"
)

func main() {
	originalPath := "path//to/some/dir/..//file.txt"
	cleanedPath := filepath.Clean(originalPath)
	fmt.Println(cleanedPath) // "path/to/some/file.txt"
}

filepath.Clean 함수는 경로의 요소들이 실제 파일 시스템 내에서 어떻게 해석될지를 기준으로 경로를 정규화합니다.

파일 경로 정규화

파일 경로 정규화는 상대 경로를 절대 경로로 변환하고 심볼릭 링크를 해석하는 등의 작업을 포함합니다. path/filepath 패키지의 EvalSymlinks 함수를 사용하여 파일 경로를 정규화할 수 있습니다. 예제 코드를 통해 확인해 보겠습니다.

package main

import (
	"fmt"
	"path/filepath"
)

func main() {
	originalPath := "/path/to/symlinked/file.txt"
	evaluatedPath, err := filepath.EvalSymlinks(originalPath)
	if err != nil {
		fmt.Println(err)
		return
	}
	fmt.Println(evaluatedPath) // "/actual/path/to/file.txt"
}

filepath.EvalSymlinks 함수는 주어진 경로의 심볼릭 링크를 해석하여 원본 경로를 반환합니다.

파일 경로를 표준화하고 정규화하는 것은 프로그램에서 파일을 다룰 때 예기치 않은 문제를 방지하고 플랫폼 간 호환성을 확보하는 데 도움이 됩니다.

이상으로 Go 언어에서 파일 경로를 표준화하고 정규화하는 방법에 대해 알아보았습니다. 파일 경로 다루기는 프로그래밍에서 중요한 부분이므로 항상 안정성과 일관성을 고려해야 합니다.