Функция os.Stat

Функция os.Stat возвращает информацию о файле или директории по указанному пути. Она возвращает два значения: интерфейс FileInfo и ошибку. Если файл не существует, возвращается ошибка типа *fs.PathError, которую можно проверить с помощью os.IsNotExist. В первый параметр передается путь к файлу или директории.

Синтаксис

goinfo, err := os.Stat(path)

Пример

Давайте получим информацию о существующем файле и выведем его размер:

gopackage main

import (
  "fmt"
  "os"
)

func main() {
  info, err := os.Stat("example.txt")
  if err != nil {
    fmt.Println("Error:", err)
    return
  }
  fmt.Println("File size:", info.Size())
}

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

go"File size: 1024"

Пример

Давайте проверим, является ли путь директорией:

gopackage main

import (
  "fmt"
  "os"
)

func main() {
  info, err := os.Stat("/tmp")
  if err != nil {
    fmt.Println("Error:", err)
    return
  }
  if info.IsDir() {
    fmt.Println("This is a directory")
  } else {
    fmt.Println("This is a file")
  }
}

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

go"This is a directory"

Пример

Давайте обработаем случай, когда файл не существует:

gopackage main

import (
  "fmt"
  "os"
)

func main() {
  info, err := os.Stat("nonexistent.txt")
  if os.IsNotExist(err) {
    fmt.Println("File does not exist")
    return
  }
  if err != nil {
    fmt.Println("Other error:", err)
    return
  }
  fmt.Println("File info:", info)
}

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

go"File does not exist"

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

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