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

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

Интерфейс fs.StatFS представляет собой файловую систему, которая поддерживает операцию получения информации о файлах и директориях. Он расширяет базовый интерфейс fs.FS и добавляет метод Stat, который возвращает информацию о файле или директории по указанному пути. В качестве первого параметра метод принимает путь к файлу или директории в виде строки, а возвращает объект fs.FileInfo, содержащий информацию о файле, и ошибку, если файл не существует или недоступен.

Синтаксис

type StatFS interface { FS Stat(name string) (fs.FileInfo, error) }

Пример использования с os.DirFS

Рассмотрим пример получения информации о файле с помощью интерфейса fs.StatFS, используя файловую систему, созданную через os.DirFS:

package main import ( "fmt" "os" "io/fs" ) func main() { fsys := os.DirFS(".") if statFS, ok := fsys.(fs.StatFS); ok { info, err := statFS.Stat("main.go") if err != nil { fmt.Printf("Error: %v", err) return } fmt.Printf("Name: %s", info.Name()) fmt.Printf("Size: %d bytes", info.Size()) fmt.Printf("IsDir: %t", info.IsDir()) fmt.Printf("Mode: %s", info.Mode()) } }

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

"Name: main.go" "Size: 1024 bytes" "IsDir: false" "Mode: -rw-r--r--"

Пример с проверкой существования файла

Давайте проверим, существует ли файл в директории, используя интерфейс fs.StatFS:

package main import ( "fmt" "os" "io/fs" ) func main() { fsys := os.DirFS("./data") if statFS, ok := fsys.(fs.StatFS); ok { _, err := statFS.Stat("config.json") if err != nil { fmt.Println("File does not exist") } else { fmt.Println("File exists") } } }

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

"File exists"

Пример получения информации о директории

Рассмотрим, как получить информацию о директории с помощью интерфейса fs.StatFS:

package main import ( "fmt" "os" "io/fs" ) func main() { fsys := os.DirFS(".") if statFS, ok := fsys.(fs.StatFS); ok { info, err := statFS.Stat(".") if err != nil { fmt.Printf("Error: %v", err) return } fmt.Printf("Directory name: %s", info.Name()) fmt.Printf("Is directory: %t", info.IsDir()) fmt.Printf("Size: %d bytes", info.Size()) } }

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

"Directory name: ." "Is directory: true" "Size: 4096 bytes"

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

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