Функция os.IsNotExist

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

Синтаксис

goos.IsNotExist(err)

Пример

Давайте проверим, вернет ли os.Stat ошибку отсутствия файла:

gopackage main

import (
  "fmt"
  "os"
)

func main() {
  _, err := os.Stat("nonexistent.txt")
  if os.IsNotExist(err) {
    fmt.Println("file does not exist")
  }
}

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

go"file does not exist"

Пример

Давайте проверим, что ошибка отсутствия для директории также распознается:

gopackage main

import (
  "fmt"
  "os"
)

func main() {
  _, err := os.Stat("/tmp/missing_dir")
  if os.IsNotExist(err) {
    fmt.Println("directory does not exist")
  }
}

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

go"directory does not exist"

Пример

Используем os.IsNotExist для обработки ошибок при чтении файла:

gopackage main

import (
  "fmt"
  "os"
)

func main() {
  data, err := os.ReadFile("config.txt")
  if err != nil {
    if os.IsNotExist(err) {
      fmt.Println("config file is missing, using defaults")
    } else {
      fmt.Println("failed to read config:", err)
    }
    return
  }
  fmt.Printf("config loaded: %s", data)
}

Результат выполнения кода (если файл отсутствует):

go"config file is missing, using defaults"

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

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