Ошибка os.ErrNotExist

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

Синтаксис

goerr := os.ErrNotExist
os.IsNotExist(err)

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

Давайте попробуем открыть несуществующий файл и обработаем ошибку:

gopackage 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")
}

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

go"File does not exist"

Пример проверки ошибки при получении информации о файле

Давайте попробуем получить информацию о несуществующем файле:

gopackage 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())
}

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

go"File info does not exist"

Пример сравнения с константой ErrNotExist

Также можно сравнивать ошибку напрямую с константой os.ErrNotExist:

gopackage 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")
  }
}

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

go"File does not exist (direct check)"

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

  • функцию os.IsNotExist,
    которая проверяет, является ли ошибка ошибкой отсутствия файла
  • функцию os.Stat,
    которая возвращает информацию о файле или директории
  • функцию os.Open,
    которая открывает файл для чтения
  • функцию os.IsExist,
    которая проверяет, является ли ошибка ошибкой существования файла