web-dev-qa-db-ja.com

ファイルまたはディレクトリが存在するかどうかを確認する方法は?

Goコードでファイル./conf/app.iniの存在を確認したいのですが、それを行う良い方法が見つかりません。

JavaのFileのメソッドpublic boolean exists()があることを知っています。これは、ファイルまたはディレクトリが存在する場合にtrueを返します。

しかし、Goでこれを行うにはどうすればよいでしょうか?

112
hardPass
// 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 true, err
}

エラー処理を追加するために編集されました。

171
Mostafa

これを使用できます:

if _, err := os.Stat("./conf/app.ini"); err != nil {
    if os.IsNotExist(err) {
        // file does not exist
    } else {
        // other error
    }
}

参照: http://golang.org/pkg/os/#IsNotExist

114
Denys Séguret

私の質問はすぐに検索できると思って数分間見回したので、もっと参考になりました。

パスがGoの既存のディレクトリを表しているかどうかを確認するにはどうすればよいですか?

これは私の検索結果で最も人気のある答えでしたが、ここと他の場所でのソリューションは存在チェックのみを提供します。 pathが既存のディレクトリを表すかどうかを確認するには、簡単にできることがわかりました。

path := GetSomePath();
if stat, err := os.Stat(path); err == nil && stat.IsDir() {
    // path is a directory
}

私の問題の一部は、path/filepathパッケージにisDir()関数が含まれることを期待していたことです。

18
Edward Wagner

ファイルが存在するかどうかを確認する簡単な方法:

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
}

ソース:

10
Nikta Jn