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

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

Интерфейс fs.ReadDirFS является частью пакета io/fs и предоставляет метод ReadDir для чтения содержимого директории. Этот интерфейс расширяет базовый интерфейс fs.FS и позволяет получить список записей директории в виде среза fs.DirEntry. Метод ReadDir принимает имя директории и возвращает срез записей и ошибку.

Синтаксис

type ReadDirFS interface { FS ReadDir(name string) ([]DirEntry, error) }

Пример

Давайте создадим файловую систему, реализующую интерфейс fs.ReadDirFS, и прочитаем содержимое директории с помощью метода ReadDir:

package main import ( "fmt" "io/fs" "os" ) func main() { // Получаем файловую систему операционной системы fsys := os.DirFS(".") // Читаем содержимое текущей директории entries, err := fsys.(fs.ReadDirFS).ReadDir(".") if err != nil { fmt.Println("Ошибка чтения директории:", err) return } // Выводим имена всех записей в директории for _, entry := range entries { fmt.Println(entry.Name()) } }

Пример

Давайте используем метод ReadDir для чтения содержимого вложенной директории и проверим тип каждой записи:

package main import ( "fmt" "io/fs" "os" ) func main() { // Создаем файловую систему для тестирования fsys := os.DirFS(".") dir := "." // Читаем содержимое директории entries, err := fsys.(fs.ReadDirFS).ReadDir(dir) if err != nil { fmt.Println("Ошибка чтения директории:", err) return } // Выводим информацию о каждой записи for _, entry := range entries { if entry.IsDir() { fmt.Println(entry.Name(), " - директория") } else { info, _ := entry.Info() fmt.Println(entry.Name(), " - файл, размер:", info.Size()) } } }

Пример

Давайте используем метод ReadDir для проверки существования директории и обработки ошибок:

package main import ( "fmt" "io/fs" "os" ) func main() { fsys := os.DirFS(".") // Пробуем прочитать несуществующую директорию _, err := fsys.(fs.ReadDirFS).ReadDir("non_existent_dir") if err != nil { fmt.Println("Ошибка:", err) } // Проверяем тип ошибки if os.IsNotExist(err) { fmt.Println("Директория не существует") } }

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

"Ошибка: open non_existent_dir: file does not exist" "Директория не существует"

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

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