Golang 에서 path 패키지 와 filepath 패키지 사용 방법

24871 단어 go 어학 공부
path
path 는 슬 래 쉬 "/" 로 구 분 된 경로 에 대한 실 용적 인 조작 함 수 를 실현 합 니 다.
path. base -- 파일 이름 가 져 오기
func Base(path string) string

Base 함수 가 경로 의 마지막 요 소 를 되 돌려 줍 니 다.원 소 를 추출 하기 전에 끝의 슬 래 쉬 를 구 합 니 다.경로 가 "" 라면 "." 로 돌아 갑 니 다.경로 가 하나의 경사 봉 으로 구성 되 어 있다 면 '/' 로 돌아 갑 니 다.
 :fmt.Println(path.Base("http://www.baidu.com/file/aa.jpg"))

path. Clean – 남 은 경로 구분자 삭제
func Clean(path string) string

Clean 함 수 는 단순 한 문법 조작 을 통 해 path 와 같은 주 소 를 나타 내 는 가장 짧 은 경 로 를 되 돌려 줍 니 다.
더 이상 처리 할 수 없 을 때 까지 다음 과 같은 규칙 을 계속 적용 합 니 다.
1.                
2.      .     (      )
3.          ..     (     )      ..     
4.           ..     ,        "/.."   "/"

루트 주소 가 "/" 일 때 만 슬 래 쉬 로 끝 납 니 다. 처리 결과 가 빈 문자열 이면 Clean 은 되 돌아 갑 니 다. "
 :fmt.Println(path.Clean("/home/file//abc///aa.jpg"))
fmt.Println(path.Clean("./file//abc///aa.jpg"))
fmt.Println(path.Clean("/../file//abc///aa.jpg"))

path. dir – 디 렉 터 리 가 져 오기
func Dir(path string) string

Dir 반환 경 로 는 마지막 경로 요소 의 부분, 즉 이 경로 의 마지막 요소 가 있 는 디 렉 터 리 를 제거 합 니 다.Split 을 사용 하여 마지막 요 소 를 제거 한 후 경 로 를 간소화 하고 끝의 슬 래 쉬 를 제거 합 니 다.경로 가 빈 문자열 이면 "..." 로 돌아 갑 니 다.경로 가 1 에서 여러 개의 슬 래 쉬 뒤 꿈 치 를 따라 0 에서 여러 개의 슬 래 쉬 문자 로 구성 되면 '/' 로 돌아 갑 니 다.다른 어떤 경우 에 도 슬 래 쉬 로 끝 나 는 경 로 를 되 돌려 주지 않 습 니 다.
 :fmt.Println(path.Dir("./file//abc///aa.jpg"))

path. Ext – 파일 확장자 가 져 오기
func Ext(path string) string

Ext 함수 가 path 파일 확장 자 를 되 돌려 줍 니 다.반환 값 은 경로 의 마지막 슬 래 쉬 로 구 분 된 경로 요소 의 마지막 '입 니 다.' 시작 접미사 (포함) '입 니 다.이 요소 가 없 으 면 빈 문자열 을 되 돌려 줍 니 다.
 :path.Ext("./file/abc/aa.jpg")

path. IsAbs – 절대 경로 인지 판단
func IsAbs(path string) bool

IsAbs 반환 경로 가 절대 경로 인지 여부 입 니 다.
 :fmt.Println(path.IsAbs("./file/abc/aa.jpg"))
   fmt.Println(path.IsAbs("/home/itcast/text/aa.txt"))

path. split – 디 렉 터 리 와 파일 이름 을 분리 합 니 다.
func Split(path string) (dir, file string)

Split 함 수 는 경 로 를 마지막 철봉 뒤의 위치 에서 두 부분 (dir 와 file) 으로 나 누 어 되 돌려 줍 니 다.경로 에 슬 래 쉬 가 없 으 면 함수 반환 값 dir 는 빈 문자열 로 설정 되 고 file 은 path 로 설정 합 니 다.두 개의 반환 값 이 path = = dir + file 을 만족 시 킵 니 다.
 :fmt.Println(path.Split("./file/abc/aaa.jpg"))

path. Join – 경로 구분자 추가 "/"
func Join(elem ...string) string

Join 함 수 는 임의의 경로 요 소 를 하나의 경로 에 넣 을 수 있 으 며 필요 에 따라 슬 래 쉬 를 추가 합 니 다.결 과 는 간소화 되 어 모든 빈 문자열 요 소 를 무시 합 니 다.
 :fmt.Println(path.Join("c:", "aa", "bb", "cc.txt"))

path. Match - 일치 하 는 경로
func Match(pattern, name string) (matched bool, err error)

name 이 셸 파일 이름 모드 와 문자열 이 일치 하면 Match 함수 가 진짜 로 돌아 갑 니 다.이 모드 는 문자열 문법 과 일치 합 니 다:
pattern:
	{ term }
term:
	'*'                                    0    /   
	'?'                                    1  /   
	'[' [ '^' ] { character-range } ']'     (    )
	c                                        c(c != '*', '?', '\\', '[')
	'\\' c                                   c
character-range:
	c               c(c != '\\', '-', ']')
	'\\' c          c
	lo '-' hi       [lo, hi]    

Match 는 일부분 이 아 닌 전체 name 문자열 을 일치 시 켜 야 합 니 다.pattern 문법 이 틀 렸 을 때 만 Err BadPattern 으로 돌아 갑 니 다.
 :isMatch, err := path.Match("c:/windows/*/", "c:/windows/system/")
   fmt.Println(isMatch, err)

filepath
filepath 패 키 지 는 각 운영 체제 의 파일 경 로 를 호 환 하 는 실 용적 인 조작 함 수 를 실현 합 니 다.
filepath. Clean – 남 은 경로 구분 자 를 삭제 하고 "/" 를 "\" 로 대체 합 니 다.
func Clean(path string) string

Clean 함 수 는 단순 한 문법 조작 을 통 해 path 와 같은 주 소 를 나타 내 는 가장 짧 은 경 로 를 되 돌려 줍 니 다.
더 이상 처리 할 수 없 을 때 까지 다음 과 같은 규칙 을 계속 적용 합 니 다.
1.                      
2.      .     (      )
3.          ..     (     )      ..     
4.           ..     ,        "/.."   "/"(        '/')

돌아 오 는 경 로 는 하나의 주 소 를 대표 할 때 만 유 닉 스 의 '/' 나 윈도 우즈 의 C:\ 와 같은 경로 구분자 로 끝 납 니 다.
만약 처리 한 결과 가 빈 문자열 이 라면 클 린 은 "..." 을 되 돌려 줍 니 다.
 :fmt.Println(filepath.Clean("c:\\\\aa/c\\baa.exe"))   

filepath. IsAbs – 절대 경로 인지 판단
func IsAbs(path string) bool

IsAbs 반환 경로 가 절대 경로 인지 여부 입 니 다.
 :fmt.Println(filepath.IsAbs("c:/wind/aa/bb/b.txt"))

filepath. abs – 절대 경로 로 강하 게 전환
func Abs(path string) (string, error)

Abs 함 수 는 path 가 대표 하 는 절대 경 로 를 되 돌려 줍 니 다. path 가 절대 경로 가 아니라면 현재 작업 디 렉 터 리 에 가입 하여 절대 경로 가 됩 니 다.하 드 링크 가 존재 하기 때문에 돌아 오 는 절대 경로 가 이 주 소 를 가리 키 는 유일한 절대 경로 라 고 보장 할 수 없습니다.
 :fmt.Println(filepath.Abs("."))  

filepath. Rel – 상대 경로 가 져 오기
func Rel(basepath, targpath string) (string, error)

Rel 함 수 는 상대 경 로 를 되 돌려 줍 니 다. basepath 와 이 경 로 를 경로 구분자 로 연결 하 는 새로운 경 로 는 품사 에서 targpath 와 같 습 니 다.즉, Join (basepath, Rel (basepath, targpath) 은 targpath 자체 와 같다.만약 성공 적 으로 실행 된다 면, 반환 값 은 항상 basepath 와 targpath 가 공유 하 는 경로 요소 가 없 더 라 도 basepath 에 대한 것 입 니 다.두 매개 변수 중 하 나 는 상대 경로 이 고 다른 하 나 는 절대 경로 이거 나 targpath 가 basepath 에 대한 경 로 를 표시 하지 못 하면 오 류 를 되 돌려 줍 니 다.
 :fmt.Println(filepath.Rel("c:/windows", "c:/windows/system/")) 

filepath. splitList – 여러 경로 가 져 오기
func SplitList(path string) []string

PATH 나 GOPATH 등 환경 변수 에 있 는 여러 경 로 를 분할 합 니 다 (이 경 로 는 OS 의 특정한 표 구분자 에 의 해 연 결 됩 니 다).strings. Split 함수 와 다른 점 은 "", SplitList 는 [] string {} 을 되 돌려 주 고 strings. Split 는 [] string {"} 을 되 돌려 줍 니 다.
 :fmt.Println(filepath.SplitList("c:/windows/system/abc.exe;c:/windows/system/a.txt"))

filepath. split – 디 렉 터 리 와 파일 이름 을 분리 합 니 다.
func Split(path string) (dir, file string)

Split 함 수 는 경 로 를 마지막 경로 구분자 뒤의 위치 에서 두 부분 (dir 와 file) 으로 나 누 어 되 돌려 줍 니 다.경로 에 경로 구분자 가 없 으 면 함수 반환 값 dir 는 빈 문자열 로 설정 되 고 file 은 path 로 설 정 됩 니 다.두 개의 반환 값 이 path = = dir + file 을 만족 시 킵 니 다.
 :fmt.Println(filepath.Split("c:/windows/system/abc.exe"))  

filepath. Join – 경로 구분자 추가
func Join(elem ...string) string

Join 함 수 는 임의의 경로 요 소 를 단일 경로 에 넣 을 수 있 으 며 필요 에 따라 경로 구분 자 를 추가 합 니 다.결 과 는 간소화 되 어 모든 빈 문자열 요 소 를 무시 합 니 다.구동 경로 라면 경로 구분 자 를 추가 하지 않 습 니 다.
 :fmt.Println(filepath.Join("c:", "aa", "bb", "cc.txt"))

filepath. FromSlash – "/" 를 "\" 로 바 꿉 니 다.
func FromSlash(path string) string

FromSlash 함 수 는 path 의 슬 래 쉬 ('/') 를 경로 구분자 로 바 꾸 고 교체 결 과 를 되 돌려 줍 니 다. 여러 슬 래 쉬 함 수 는 여러 경로 구분자 로 대 체 됩 니 다.
 :fmt.Println(filepath.FromSlash("c:\\windows\\aa//bb/cc//path.exe"))

filepath. ToSlash – "\" 를 "/" 로 바 꿉 니 다.
func ToSlash(path string) string

ToSlash 함 수 는 path 의 경로 구분 자 를 슬 래 쉬 ('/') 로 바 꾸 고 교체 결 과 를 되 돌려 줍 니 다. 여러 경로 구분 자 는 여러 슬 래 쉬 로 대 체 됩 니 다.
 :fmt.Println(filepath.FromSlash("c:\\windows\\aa//bb/cc//path.exe"))

filepath. VolumeName – 볼 륨 이름 가 져 오기
func VolumeName(path string) (v string)

VolumeName 함 수 는 맨 앞 에 있 는 볼 륨 이름 을 되 돌려 줍 니 다.Windows 시스템 에서 "C: \ foo \ bar" 인 자 를 제공 하면 "C:" 로 돌아 갑 니 다.Unix / linux 시스템 의 "\ host \ share \ foo" 는 "\ host \ share" 로 돌아 갑 니 다.다른 플랫폼 은 되 돌아 올 것 "이 라 고 말 했다.
 :fmt.Println(filepath.VolumeName("c:\\windows\\"))  

filepath. dir – 디 렉 터 리 가 져 오기
func Dir(path string) string

Dir 반환 경 로 는 마지막 경로 요소 의 부분, 즉 이 경로 의 마지막 요소 가 있 는 디 렉 터 리 를 제거 합 니 다.Split 을 사용 하여 마지막 요 소 를 제거 한 후 경 로 를 간소화 하고 끝의 슬 래 쉬 를 제거 합 니 다.경로 가 빈 문자열 이면 "..." 로 돌아 갑 니 다.경로 가 1 에서 여러 경로 구분자 로 구 성 된 후 0 에서 여러 개의 비 경로 구분자 문자 로 구성 되면 하나의 경로 구분자 로 돌아 갑 니 다.다른 어떤 경우 에 도 경로 구분자 로 끝 나 는 경 로 를 되 돌려 주지 않 습 니 다.
 :fmt.Println(filepath.Dir("c:/aa/c\\baa.exe"))  

filepath. base – 파일 이름 가 져 오기
func Base(path string) string

Base 함수 가 경로 의 마지막 요 소 를 되 돌려 줍 니 다.원 소 를 추출 하기 전에 끝의 경로 구분 자 를 구 합 니 다.경로 가 "" 라면 "." 로 돌아 갑 니 다.경로 가 하나의 경사 봉 으로 구성 되 어 있다 면 하나의 경로 구분자 로 돌아 갑 니 다.
 :fmt.Println(filepath.Base("c:\\aa\\baa.exe")) 

filepath. Ext – 파일 확장자 가 져 오기
func Ext(path string) string

Ext 함수 가 path 파일 확장 자 를 되 돌려 줍 니 다.반환 값 은 경로 의 마지막 경로 요소 의 마지막 입 니 다. '시작 접미사 (포함)' 입 니 다.이 요소 가 없 으 면 빈 문자열 을 되 돌려 줍 니 다.
 :fmt.Println(filepath.Ext("./path.exe")) 

filepath. EvalSymlinks – 파일 이 존재 하 는 지 판단 하 는 데 사 용 됩 니 다.
func EvalSymlinks(path string) (string, error)

EvalSymlinks 함 수 는 path 가 가리 키 는 심 볼 릭 링크 (소프트 링크) 에 포 함 된 경 로 를 되 돌려 줍 니 다.path 와 반환 값 이 상대 경로 라면 현재 디 렉 터 리 와 비교 합 니 다.두 경로 중 하 나 는 절대 경로 가 아 닌
 :fmt.Println(filepath.EvalSymlinks("./path.exe"))  

filepath. Match – 일치 하 는 경로
func Match(pattern, name string) (matched bool, err error)

Match returns true if name matches the shell file name pattern. The pattern syntax is:
pattern:
	{ term }
term:
	'*'                                    0            
	'?'                                    1          
	'[' [ '^' ] { character-range } ']'     (    )
	c                                        c(c != '*', '?', '\\', '[')
	'\\' c                                   c
character-range:
	c               c(c != '\\', '-', ']')
	'\\' c          c
	lo '-' hi       [lo, hi]    

Match 는 일부분 이 아 닌 전체 name 문자열 을 일치 시 켜 야 합 니 다.pattern 문법 이 틀 렸 을 때 만 Err BadPattern 으로 돌아 갑 니 다.
Windows 시스템 에 서 는 '\' 를 경로 구분자 로 볼 수 없습니다.
 :fmt.Println(filepath.Match("c:/windows/*/", "c:/windows/system/")) 

filepath. Glob – 파일 찾기
func Glob(pattern string) (matches []string, err error)

Glob 함 수 는 문자열 pattern 과 일치 하 는 모든 파일 이나 nil (일치 하 는 파일 이 없 으 면) 을 되 돌려 줍 니 다.pattern 의 문법 은 Match 함수 와 같 습 니 다.pattern 은 다 중 이름 을 설명 할 수 있 습 니 다. 예 를 들 어 / usr / * 빈 / ed (경로 구분자 가 '/' 라 고 가정 합 니 다).
 :fmt.Println(filepath.Glob("D:\\Program Files\\Tencent\\*\\*.exe"))

filepath. Walk – 디 렉 터 리 에 있 는 디 렉 터 리 와 파일 을 리 셋 함수 로 조작 합 니 다.
func Walk(root string, walkFn WalkFunc) error

Walk 함 수 는 루트 가 지정 한 디 렉 터 리 에 있 는 파일 트 리 를 옮 겨 다 니 며, 이 파일 트 리 의 디 렉 터 리 와 파일 마다 루트 자 체 를 포함 하여 walkfn 을 호출 합 니 다.모든 파일 / 디 렉 터 리 에 접근 할 때 발생 하 는 오 류 는 walkfn 에 전 달 됩 니 다.파일 은 품사 순 으로 옮 겨 다 니 며 출력 을 더욱 예 쁘 게 하지만 매우 큰 디 렉 터 리 를 처리 할 때 효율 이 떨어진다.Walk 함 수 는 파일 트 리 에 있 는 심 볼 릭 링크 (단축 키) 파일 에 포 함 된 경 로 를 옮 겨 다 니 지 않 습 니 다.
type WalkFunc func(path string, info os.FileInfo, err error) error

Walk 함 수 는 모든 파일 / 디 렉 터 리 에 WalkFunc 함수 형식 값 을 호출 합 니 다.호출 시 path 인 자 는 Walk 의 루트 인 자 를 접두사 로 포함 합 니 다.즉, Walk 함수 의 루트 가 "dir" 이면 이 디 렉 터 리 에 파일 "a" 가 있 으 면 "dir / a" 를 사용 하여 walkfn 인 자 를 호출 합 니 다.walkfn 매개 변수 가 호출 될 때의 info 매개 변 수 는 path 가 지정 한 주소 (파일 / 디 렉 터 리) 의 파일 정보 이 며, 형식 은 os. FileInfo 입 니 다.
path 가 지정 한 파일 이나 디 렉 터 리 를 옮 겨 다 닐 때 문제 가 발생 하면 들 어 오 는 매개 변수 err 는 이 문 제 를 설명 합 니 다. WalkFunc 형식 함 수 는 이 오 류 를 어떻게 처리 할 지 결정 할 수 있 습 니 다 (Walk 함 수 는 이 디 렉 터 리 에 깊이 들 어가 지 않 습 니 다).이 함수 가 오 류 를 되 돌려 주면 Walk 함수 의 실행 이 중 단 됩 니 다.하나의 예외 만 있 습 니 다. Walk 의 walkfn 반환 값 이 SkipDir 이면 이 디 렉 터 리 의 내용 을 건 너 뛰 고 Walk 함 수 는 다음 파일 을 평소 대로 처리 합 니 다.
func main() {
filepath.Walk("D:\\Program Files", WalkFunc)
}
func WalkFunc(path string, info os.FileInfo, err error) error {
    fmt.Println("File:", path, "IsDir:", info.IsDir(), "size:", info.Size())
    return nil
}

filepath.HasPrefix
func HasPrefix(p, prefix string) bool

HasPrefix 함 수 는 과거 호환성 문제 로 유지 되 며 사용 되 어 서 는 안 됩 니 다.

좋은 웹페이지 즐겨찾기