Ответы:
// 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
}
}
Скорее к вашему сведению, так как я несколько минут огляделся вокруг, думая, что мой вопрос - это быстрый поиск.
Как проверить, представляет ли путь существующий каталог в 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)
).