Метод 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,
который предоставляет информацию о файле