Ошибка os.ErrNotExist
Ошибка os.ErrNotExist возвращается функциями пакета os при попытке доступа к файлу или директории, которые не существуют. Эта ошибка часто возникает при работе с файловой системой, когда мы пытаемся открыть, прочитать или получить информацию о несуществующем файле. Для проверки этой ошибки используется функция os.IsNotExist, которая принимает ошибку и возвращает true, если ошибка является ошибкой отсутствия файла.
Синтаксис
err := os.ErrNotExist
os.IsNotExist(err)
Пример проверки ошибки при открытии файла
Давайте попробуем открыть несуществующий файл и обработаем ошибку:
package main
import (
"fmt"
"os"
)
func main() {
file, err := os.Open("nonexistent.txt")
if err != nil {
if os.IsNotExist(err) {
fmt.Println("File does not exist")
} else {
fmt.Println("Other error:", err)
}
return
}
defer file.Close()
fmt.Println("File opened successfully")
}
Результат выполнения кода:
"File does not exist"
Пример проверки ошибки при получении информации о файле
Давайте попробуем получить информацию о несуществующем файле:
package main
import (
"fmt"
"os"
)
func main() {
info, err := os.Stat("missing.txt")
if err != nil {
if os.IsNotExist(err) {
fmt.Println("File info does not exist")
} else {
fmt.Println("Other error:", err)
}
return
}
fmt.Println("File size:", info.Size())
}
Результат выполнения кода:
"File info does not exist"
Пример сравнения с константой ErrNotExist
Также можно сравнивать ошибку напрямую с константой os.ErrNotExist:
package main
import (
"fmt"
"os"
)
func main() {
_, err := os.Stat("missing.txt")
if errors.Is(err, os.ErrNotExist) {
fmt.Println("File does not exist (direct check)")
} else if err != nil {
fmt.Println("Other error:", err)
} else {
fmt.Println("File exists")
}
}
Результат выполнения кода:
"File does not exist (direct check)"
Смотрите также
-
функцию
os.IsNotExist,
которая проверяет, является ли ошибка ошибкой отсутствия файла -
функцию
os.Stat,
которая возвращает информацию о файле или директории -
функцию
os.Open,
которая открывает файл для чтения -
функцию
os.IsExist,
которая проверяет, является ли ошибка ошибкой существования файла