[golang] path/filepath 패키지로 멀티 플랫폼에서 파일 경로 처리

서론
현대의 애플리케이션은 다양한 플랫폼에서 동작해야 하는 경우가 많다. 특히 파일 경로를 다루는 작업은 운영 체제마다 파일 경로 구분자가 다르기 때문에 멀티 플랫폼 개발에서 흔히 마주치는 도전 과제 중 하나이다. Go 언어는 이러한 문제를 해결할 수 있는 표준 패키지를 제공한다. path/filepath 패키지는 각 플랫폼에서 사용하는 방식으로 파일 경로를 안전하게 처리할 수 있다. 파일 경로를 다루는 작업에서는 path/filepath 패키지를 사용해 처리하는 것이 플랫폼에 따른 코드 호환성을 보장하는 최선의 방법이다. 이 글에서는 간단한 예제를 통해 path/filepath 패키지의 사용법을 알아본다.
path/filepath 패키지 사용하기
package main
import (
"fmt"
"path/filepath"
)
func main() {
fmt.Println("Separator:", string(filepath.Separator))
fmt.Println("ListSeparator:", string(filepath.ListSeparator))
path := filepath.Join("..", "asset", "example.jpg")
fmt.Println("Path:", path)
fmt.Println("Dir:", filepath.Dir(path))
fmt.Println("Base:", filepath.Base(path))
fmt.Println("Ext:", filepath.Ext(path))
}
이 예제는 path/filepath 패키지를 사용해 파일 경로를 다루는 방법을 보여준다. filepath.Separator와 filepath.ListSeparator는 각각 플랫폼에 맞는 파일 경로 구분자와 파일 경로 목록 구분자가 상수로 정의되어 있다. filepath.Join은 여러 경로를 결합해 하나의 경로를 만들 때 사용되며 각 플랫폼에 맞는 구분자가 자동으로 적용된다. 이 메소드를 사용하면 운영 체제에 관계없이 일관된 경로를 생성할 수 있다. filepath.Dir은 주어진 경로에서 디렉토리 부분만 반환하며 이를 통해 파일 이름을 제외한 디렉토리 경로를 얻을 수 있다. 반대로 filepath.Base는 경로에서 파일 이름을 반환하고 filepath.Ext는 주어진 경로에서 파일 확장자만 추출한다. 이 메소드들을 사용하면 다양한 플랫폼에서 경로를 안전하고 일관되게 처리할 수 있다.
Linux 및 macOS 실행 결과
Separator: /
ListSeparator: :
Path: ../asset/example.jpg
Dir: ../asset
Base: example.jpg
Ext: .jpg
Windows 실행 결과
Separator: \
PathListSeparator: ;
Path: ..\asset\example.jpg
Dir: ..\asset
Base: example.jpg
Ext: .jpg
마무리
path/filepath 패키지는 플랫폼에 따른 경로 구분자 차이를 자동으로 처리하여 멀티 플랫폼 환경에서 매우 유용하다. 이를 통해 개발자는 운영 체제에 구애받지 않고 경로를 안전하고 일관되게 처리할 수 있다. 이 글에서 다루지 않은 추가적인 기능이나 더 상세한 설명이 필요하다면 공식 문서를 참조하는 것이 좋다.
'Language > Go' 카테고리의 다른 글
| [golang] 런타임에 콜 스택 출력하기 (1) | 2024.11.22 |
|---|---|
| [golang] panic과 recover로 try-catch 따라 하기 (1) | 2024.11.21 |
| [golang] flag 패키지로 명령줄 옵션 처리하기 (0) | 2024.11.19 |
| [golang] Go 언어 철학에서 switch문이 살아 남은 이유 (3) | 2024.11.18 |
| [golang] runtime 패키지로 메모리 사용 추적 (0) | 2024.11.17 |