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

Интерфейс fs.FileInfo

Интерфейс fs.FileInfo представляет информацию о файле или директории. Он содержит методы для получения имени файла, его размера, времени последнего изменения, режима доступа и определения, является ли объект директорией. Этот интерфейс часто возвращается функциями os.Stat, os.Lstat и os.File.Stat.

Методы интерфейса

Интерфейс fs.FileInfo содержит следующие методы:

  • Name() string - возвращает имя файла (без пути)
  • Size() int64 - возвращает размер файла в байтах
  • Mode() fs.FileMode - возвращает режим доступа и тип файла
  • ModTime() time.Time - возвращает время последнего изменения
  • IsDir() bool - возвращает true, если объект является директорией
  • Sys() any - возвращает системно-зависимые данные о файле

Базовый пример использования

Получим информацию о существующем файле с помощью функции os.Stat:

package main import ( "fmt" "os" ) func main() { info, err := os.Stat("example.txt") if err != nil { fmt.Println("Error:", err) return } fmt.Println("Name:", info.Name()) fmt.Println("Size:", info.Size()) fmt.Println("IsDir:", info.IsDir()) fmt.Println("ModTime:", info.ModTime()) fmt.Println("Mode:", info.Mode()) }

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

Name: example.txt Size: 1024 IsDir: false ModTime: 2026-09-04 12:34:56 +0000 UTC Mode: -rw-r--r--

Определение типа объекта

Проверим, является ли объект файлом или директорией, с помощью метода IsDir:

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

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

testdir is a directory

Проверка режима доступа

Метод Mode возвращает режим доступа к файлу. Проверим наличие прав на запись:

package main import ( "fmt" "os" ) func main() { info, err := os.Stat("example.txt") if err != nil { fmt.Println("Error:", err) return } mode := info.Mode() if mode&0200 != 0 { fmt.Println("File is writable by owner") } else { fmt.Println("File is not writable by owner") } }

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

File is writable by owner

Получение информации о временном файле

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

package main import ( "fmt" "os" ) func main() { file, err := os.CreateTemp("", "temp-*.txt") if err != nil { fmt.Println("Error:", err) return } defer os.Remove(file.Name()) defer file.Close() info, err := file.Stat() if err != nil { fmt.Println("Error:", err) return } fmt.Println("Temp file name:", info.Name()) fmt.Println("Temp file size:", info.Size()) }

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

Temp file name: temp-123456789.txt Temp file size: 0

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

  • функцию os.Stat,
    которая возвращает информацию о файле или директории
  • функцию os.Lstat,
    которая возвращает информацию о файле без перехода по символическим ссылкам
  • интерфейс fs.DirEntry,
    который предоставляет информацию об элементе директории
  • функцию os.ReadDir,
    которая читает содержимое директории и возвращает список элементов
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить