답변:
// exists returns whether the given file or directory exists
func exists(path string) (bool, error) {
_, err := os.Stat(path)
if err == nil { return true, nil }
if os.IsNotExist(err) { return false, nil }
return false, err
}
오류 처리를 추가하도록 편집되었습니다.
panic
객체와 같은 실제 "예외"에 사용합니다. 을 (를) 호출하여 "잡을"수 있습니다 recover
. err
두 번째 반환 값으로 명시 적으로 반환하는 것은 매우 일반적이고 관용적 인 Go 기술입니다. 참조 : golang.org/doc/effective_go.html#errors
if _, err := os.Stat("./conf/app.ini"); err == nil { /*exists*/ } else { /*not exists or some other error*/ }
이것을 사용할 수 있습니다 :
if _, err := os.Stat("./conf/app.ini"); err != nil {
if os.IsNotExist(err) {
// file does not exist
} else {
// other error
}
}
FYI의 더 많은 것, 나는 내 질문이 빠른 검색이라고 생각하면서 몇 분 동안 둘러 보았으므로.
Go에서 경로가 기존 디렉토리를 나타내는 지 확인하는 방법은 무엇입니까?
이것은 내 검색 결과에서 가장 인기있는 답변이지만 여기 및 다른 곳에서는 솔루션이 존재 확인 만 제공합니다. path
기존 디렉토리를 나타내는 지 확인하기 위해 쉽게 할 수 있음을 발견했습니다.
path := GetSomePath();
if stat, err := os.Stat(path); err == nil && stat.IsDir() {
// path is a directory
}
내 문제의 일부는 path/filepath
패키지에 isDir () 함수가 포함될 것으로 예상했다는 것 입니다.
파일이 있는지 여부를 확인하는 간단한 방법 :
if _, err := os.Stat("/path/to/whatever"); os.IsNotExist(err) {
// path/to/whatever does not exist
}
if _, err := os.Stat("/path/to/whatever"); err == nil {
// path/to/whatever exists
}
출처 :
파일이 있는지 여부를 확인하는 간단한 방법이 있습니다.
if _, err := os.Stat("./conf/app.ini"); err != nil {
if os.IsNotExist(err) {
..... //Shows error if file not exists
} else {
..... // Shows success message like file is there
}
}
f, err := os.Open(name)
또는f, err := os.OpenFile(name,os.O_CREATE|os.O_EXCL, mode)
확인한 다음 확인os.IsNotExist(err)
).