Как проверить, существует ли в Голанге файл или каталог, обозначенные по пути?

Я хочу проверить наличие файла ./conf/app.ini в моем коде Golang. Но я не могу найти хороший способ сделать это.

Я знаю, что есть метод File в Java: public boolean exists(), который возвращает true, если файл или каталог существует.

Но как это сделать в Голанге?

Ответ 1

// exists returns whether the given file or directory exists or not
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
}

Отредактировано для добавления обработки ошибок.

Ответ 2

Вы можете использовать это:

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

Ответ 3

Больше FYI, так как я несколько минут огляделся, думая, что мой вопрос будет быстро искать.

Как проверить, содержит ли путь существующий каталог в Go?

Это был самый популярный ответ в моих результатах поиска, но здесь и в другом месте решения обеспечивают проверку наличия. Чтобы проверить, существует ли path существующий каталог, я обнаружил, что могу легко:

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

Часть моей проблемы заключалась в том, что я ожидал, что пакет path/filepath будет содержать функцию isDir().