回答:
// 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
2番目の戻り値として明示的にを返すことは、非常に一般的な慣用的な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
}
}
私の質問はすぐに検索できると思って数分間周りを見回したので、参考までに。
パスが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)
)。