Интерфейс 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,
которая читает содержимое директории и возвращает список элементов