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

Тип os.DirEntry

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

Интерфейс os.DirEntry содержит несколько важных методов: Name возвращает имя записи, IsDir проверяет, является ли запись директорией, Type возвращает битовую маску с типом записи, а Info возвращает подробную информацию типа os.FileInfo.

Синтаксис

type DirEntry interface { Name() string IsDir() bool Type() FileMode Info() (FileInfo, error) }

Пример

Получим список записей в текущей директории и выведем имена и типы всех элементов:

package main import ( "fmt" "os" ) func main() { entries, err := os.ReadDir(".") if err != nil { fmt.Println("Error reading directory:", err) return } for _, entry := range entries { fmt.Printf("%s, isDir: %v\n", entry.Name(), entry.IsDir()) } }

Пример

Проверим, является ли запись директорией, и получим детальную информацию через метод Info:

package main import ( "fmt" "os" ) func main() { entries, err := os.ReadDir(".") if err != nil { fmt.Println("Error reading directory:", err) return } for _, entry := range entries { if !entry.IsDir() { info, err := entry.Info() if err != nil { fmt.Printf("Error getting info for %s: %v\n", entry.Name(), err) continue } fmt.Printf("File: %s, Size: %d bytes\n", entry.Name(), info.Size()) } } }

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

"File: go.mod, Size: 42 bytes" "File: main.go, Size: 128 bytes"

Пример

Используем метод Type для определения типа записи в виде битовой маски os.FileMode:

package main import ( "fmt" "os" ) func main() { entries, err := os.ReadDir(".") if err != nil { fmt.Println("Error reading directory:", err) return } for _, entry := range entries { mode := entry.Type() fmt.Printf("%s: Type: %v\n", entry.Name(), mode) } }

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

"go.mod: Type: -rw-r--r--" "main.go: Type: -rw-r--r--" "images: Type: drwxr-xr-x"

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

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