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

Функция 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,
    которая обходит дерево директорий рекурсивно
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить