Метод os.File.ReadDir
Метод os.File.ReadDir читает содержимое директории и возвращает срез объектов, реализующих интерфейс fs.DirEntry. В первый параметр метод принимает целое число n, которое определяет количество элементов для чтения. Если передать n <= 0, метод прочитает все записи директории. Метод возвращает срез []fs.DirEntry и ошибку error.
Синтаксис
entries, err := file.ReadDir(n)
Пример
Давайте прочитаем все записи из текущей директории:
package main
import (
"fmt"
"os"
)
func main() {
file, err := os.Open(".")
if err != nil {
fmt.Println("Error opening directory:", err)
return
}
defer file.Close()
entries, err := file.ReadDir(-1)
if err != nil {
fmt.Println("Error reading directory:", err)
return
}
for _, entry := range entries {
fmt.Println(entry.Name())
}
}
Результат выполнения кода:
"file1.txt"
"file2.txt"
"folder1"
"folder2"
Пример
Давайте прочитаем только первые две записи из директории:
package main
import (
"fmt"
"os"
)
func main() {
file, err := os.Open(".")
if err != nil {
fmt.Println("Error opening directory:", err)
return
}
defer file.Close()
entries, err := file.ReadDir(2)
if err != nil {
fmt.Println("Error reading directory:", err)
return
}
for _, entry := range entries {
fmt.Println(entry.Name())
}
}
Результат выполнения кода:
"file1.txt"
"file2.txt"
Пример
Давайте проверим, является ли каждый элемент директории файлом или папкой:
package main
import (
"fmt"
"os"
)
func main() {
file, err := os.Open(".")
if err != nil {
fmt.Println("Error opening directory:", err)
return
}
defer file.Close()
entries, err := file.ReadDir(-1)
if err != nil {
fmt.Println("Error reading directory:", err)
return
}
for _, entry := range entries {
if entry.IsDir() {
fmt.Printf("%s is a directory\n", entry.Name())
} else {
fmt.Printf("%s is a file\n", entry.Name())
}
}
}
Результат выполнения кода:
"file1.txt is a file"
"file2.txt is a file"
"folder1 is a directory"
"folder2 is a directory"
Смотрите также
-
функцию
os.ReadDir,
которая упрощает чтение директории без явного открытия файла -
метод
os.File.Readdir,
который возвращает информацию о файлах в видеfs.FileInfo -
функцию
filepath.WalkDir,
которая рекурсивно обходит все поддиректории -
функцию
os.Stat,
которая возвращает информацию о конкретном файле