Метод os.File.Readdirnames

Метод os.File.Readdirnames читает содержимое директории и возвращает срез имен файлов (и поддиректорий) в виде строк. В качестве параметра метод принимает количество имен, которое нужно прочитать. Если передать -1, то будут прочитаны все имена из директории. Метод возвращает срез строк и ошибку. Если достигнут конец директории, возвращается ошибка io.EOF, а срез будет пустым.

Синтаксис

gonames, err := file.Readdirnames(n int)

Пример

Давайте прочитаем все имена файлов из текущей директории:

gopackage main

import (
  "fmt"
  "io"
  "os"
)

func main() {
  dir, err := os.Open(".")
  if err != nil {
    fmt.Println(err)
    return
  }
  defer dir.Close()
  
  names, err := dir.Readdirnames(-1)
  if err != nil && err != io.EOF {
    fmt.Println(err)
    return
  }
  
  fmt.Println(names)
}

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

go["file1.txt" "file2.go" "subdir" "main.go"]

Пример

Давайте прочитаем только первые три имени из директории:

gopackage main

import (
  "fmt"
  "io"
  "os"
)

func main() {
  dir, err := os.Open(".")
  if err != nil {
    fmt.Println(err)
    return
  }
  defer dir.Close()
  
  names, err := dir.Readdirnames(3)
  if err != nil && err != io.EOF {
    fmt.Println(err)
    return
  }
  
  fmt.Println(names)
}

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

go["file1.txt" "file2.go" "subdir"]

Пример

Метод возвращает только имена, без полной информации о файлах. Прочитаем имена из директории и выведем каждое имя отдельно:

gopackage main

import (
  "fmt"
  "io"
  "os"
)

func main() {
  dir, err := os.Open("./data")
  if err != nil {
    fmt.Println(err)
    return
  }
  defer dir.Close()
  
  names, err := dir.Readdirnames(-1)
  if err != nil && err != io.EOF {
    fmt.Println(err)
    return
  }
  
  for _, name := range names {
    fmt.Println("File:", name)
  }
}

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

go"File: config.yaml"
"File: logs"
"File: output.json"

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

  • метод os.File.Readdir,
    который возвращает информацию о файлах в директории
  • функцию os.ReadDir,
    которая читает директорию и возвращает срез DirEntry
  • функцию os.Open,
    которая открывает файл или директорию для чтения
  • функцию os.File.Close,
    которая закрывает открытый файл или директорию