Функция os.ReadDir
Функция os.ReadDir читает содержимое директории и возвращает срез []fs.DirEntry, отсортированный по именам файлов. В первый параметр мы передаем путь к директории в виде строки, во второй параметр мы передаем целое число, указывающее максимальное количество записей для чтения (передача -1 означает чтение всех записей). Функция возвращает срез записей директории и ошибку, которая будет nil при успешном выполнении.
Синтаксис
os.ReadDir(dirname string, n int) ([]fs.DirEntry, error)
Пример
Давайте прочитаем все содержимое текущей директории:
package main
import (
"fmt"
"os"
)
func main() {
entries, err := os.ReadDir(".", -1)
if err != nil {
fmt.Println("Error:", err)
return
}
for _, entry := range entries {
fmt.Println(entry.Name())
}
}
Результат выполнения кода:
"file1.txt"
"file2.go"
"folder"
"main.go"
Пример
Давайте прочитаем только первые две записи из директории:
package main
import (
"fmt"
"os"
)
func main() {
entries, err := os.ReadDir(".", 2)
if err != nil {
fmt.Println("Error:", err)
return
}
for _, entry := range entries {
fmt.Println(entry.Name())
}
}
Результат выполнения кода:
"file1.txt"
"file2.go"
Пример
Давайте проверим, является ли запись директорией, и получим информацию о файле:
package main
import (
"fmt"
"os"
)
func main() {
entries, err := os.ReadDir(".", -1)
if err != nil {
fmt.Println("Error:", err)
return
}
for _, entry := range entries {
if entry.IsDir() {
fmt.Printf("%s is a directory\n", entry.Name())
} else {
info, err := entry.Info()
if err != nil {
fmt.Println("Error getting info:", err)
continue
}
fmt.Printf("%s size: %d bytes\n", entry.Name(), info.Size())
}
}
}
Результат выполнения кода:
"file1.txt size: 1024 bytes"
"file2.go size: 2048 bytes"
"folder is a directory"
"main.go size: 512 bytes"
Пример
Давайте обработаем ошибку при попытке прочитать несуществующую директорию:
package main
import (
"fmt"
"os"
)
func main() {
entries, err := os.ReadDir("/nonexistent", -1)
if err != nil {
fmt.Println("Error:", err)
return
}
for _, entry := range entries {
fmt.Println(entry.Name())
}
}
Результат выполнения кода:
"Error: open /nonexistent: no such file or directory"
Смотрите также
-
функцию
os.ReadFile,
которая читает содержимое файла в байтовый срез -
функцию
os.Mkdir,
которая создает новую директорию -
функцию
os.Stat,
которая возвращает информацию о файле или директории -
функцию
filepath.WalkDir,
которая обходит дерево директорий рекурсивно