РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
609 of 1593 menu

Ошибка fs.ErrNotExist

Ошибка fs.ErrNotExist представляет собой стандартную ошибку, которая возвращается функциями пакета io/fs при попытке доступа к файлу или директории, которые не существуют в файловой системе. Эта ошибка используется для проверки наличия файлов и корректной обработки ситуаций, когда файл не найден.

Синтаксис

var ErrNotExist = errors.New("file does not exist")

Пример проверки ошибки при открытии файла

Давайте попробуем открыть несуществующий файл и проверим, возвращает ли функция os.Open ошибку fs.ErrNotExist:

package main import ( "fmt" "io/fs" "os" ) func main() { file, err := os.Open("nonexistent.txt") if err != nil { if err == fs.ErrNotExist { 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"

Пример с использованием os.IsNotExist

Более надежный способ проверки ошибки fs.ErrNotExist - использовать функцию os.IsNotExist, которая корректно работает с обернутыми ошибками:

package main import ( "fmt" "os" ) func main() { _, err := os.Stat("missing_file.txt") if err != nil { if os.IsNotExist(err) { fmt.Println("file or directory does not exist") } else { fmt.Println("other error:", err) } return } fmt.Println("file exists") }

Результат выполнения кода:

"file or directory does not exist"

Пример сравнения с fs.ErrNotExist

При работе с функциями пакета os ошибка может быть обернута в fs.PathError, поэтому прямое сравнение с fs.ErrNotExist может не сработать. Рассмотрим этот случай:

package main import ( "errors" "fmt" "io/fs" "os" ) func main() { _, err := os.Open("no_such_file.txt") if err != nil { if errors.Is(err, fs.ErrNotExist) { fmt.Println("file does not exist (using errors.Is)") } if err == fs.ErrNotExist { fmt.Println("file does not exist (direct comparison)") } else { fmt.Println("direct comparison failed") } } }

Результат выполнения кода:

"file does not exist (using errors.Is)" "direct comparison failed"

Смотрите также

  • функцию os.IsNotExist,
    которая проверяет, указывает ли ошибка на отсутствие файла
  • функцию os.IsExist,
    которая проверяет, указывает ли ошибка на существование файла
  • функцию os.Stat,
    которая возвращает информацию о файле или директории
  • функцию os.IsPermission,
    которая проверяет наличие ошибки доступа к файлу
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить