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

Метод os.File.Readdir

Метод os.File.Readdir читает содержимое директории и возвращает срез []fs.FileInfo — информацию о каждом файле или поддиректории. В качестве параметра метод принимает целое число n, которое ограничивает количество возвращаемых элементов. Если передать -1, метод вернет все записи из директории. Если n больше нуля, метод попытается прочитать ровно n элементов, но может вернуть меньше, если в директории недостаточно записей. Метод также может вернуть ошибку io.EOF, если директория уже прочитана до конца.

Синтаксис

func (f *File) Readdir(n int) ([]fs.FileInfo, error)

Пример с чтением всех файлов

Давайте откроем директорию и прочитаем все ее содержимое с помощью Readdir с аргументом -1:

package main import ( "fmt" "os" ) func main() { dir, err := os.Open(".") if err != nil { fmt.Println(err) return } defer dir.Close() files, err := dir.Readdir(-1) if err != nil { fmt.Println(err) return } for _, file := range files { fmt.Println(file.Name()) } }

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

"file1.txt" "file2.go" "subdir"

Пример с чтением ограниченного количества

Давайте прочитаем только первые 2 элемента из директории. Если в директории меньше элементов, метод вернет то, что есть:

package main import ( "fmt" "os" ) func main() { dir, err := os.Open(".") if err != nil { fmt.Println(err) return } defer dir.Close() files, err := dir.Readdir(2) if err != nil { fmt.Println(err) return } for _, file := range files { fmt.Println(file.Name()) } }

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

"file1.txt" "file2.go"

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

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