Как проверить, существует ли в Голанге файл или каталог, обозначенные по пути?
Я хочу проверить наличие файла ./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().