Тип os.FileInfo
Тип os.FileInfo представляет собой интерфейс,
который предоставляет информацию о файле или директории.
Он возвращается функциями os.Stat, os.Lstat,
а также методом File.Stat. Интерфейс содержит методы
для получения имени файла, размера, режима доступа,
времени последнего изменения и других свойств.
Методы интерфейса
type FileInfo interface {
Name() string // имя файла
Size() int64 // размер в байтах
Mode() FileMode // права доступа
ModTime() time.Time // время последнего изменения
IsDir() bool // является ли директорией
Sys() any // системные данные
}
Пример
Давайте получим информацию о файле с помощью функции os.Stat:
package main
import (
"fmt"
"os"
"time"
)
func main() {
// Создаем тестовый файл
os.WriteFile("test.txt", []byte("Hello, World!"), 0644)
defer os.Remove("test.txt")
// Получаем информацию о файле
info, err := os.Stat("test.txt")
if err != nil {
fmt.Println(err)
return
}
fmt.Println("Name:", info.Name())
fmt.Println("Size:", info.Size())
fmt.Println("IsDir:", info.IsDir())
fmt.Println("ModTime:", info.ModTime().Format(time.RFC3339))
}
Результат выполнения кода:
"Name: test.txt"
"Size: 13"
"IsDir: false"
"ModTime: 2024-01-01T12:00:00Z"
Пример
Давайте проверим, является ли путь директорией, с помощью метода IsDir:
package main
import (
"fmt"
"os"
)
func main() {
// Создаем тестовую директорию
os.Mkdir("testdir", 0755)
defer os.Remove("testdir")
info, err := os.Stat("testdir")
if err != nil {
fmt.Println(err)
return
}
if info.IsDir() {
fmt.Println("testdir is a directory")
} else {
fmt.Println("testdir is not a directory")
}
}
Результат выполнения кода:
"testdir is a directory"
Пример
Давайте получим права доступа к файлу с помощью метода Mode:
package main
import (
"fmt"
"os"
)
func main() {
// Создаем тестовый файл с определенными правами
os.WriteFile("test.txt", []byte("Hello"), 0644)
defer os.Remove("test.txt")
info, err := os.Stat("test.txt")
if err != nil {
fmt.Println(err)
return
}
mode := info.Mode()
fmt.Println("File mode:", mode)
fmt.Println("Is regular file:", mode.IsRegular())
fmt.Println("Permissions:", mode.Perm())
}
Результат выполнения кода:
"File mode: -rw-r--r--"
"Is regular file: true"
"Permissions: -rw-r--r--"
Смотрите также
-
функцию
os.Stat,
которая возвращает информацию о файле -
функцию
os.Lstat,
которая возвращает информацию о файле, не следуя по символическим ссылкам -
функцию
os.SameFile,
которая проверяет, указывают ли два объектаFileInfoна один файл -
метод
os.File.Stat,
который возвращает информацию об открытом файле