Метод os.File.Readdirnames
Метод os.File.Readdirnames читает содержимое директории
и возвращает срез имен файлов (и поддиректорий) в виде строк.
В качестве параметра метод принимает количество имен,
которое нужно прочитать. Если передать -1, то будут
прочитаны все имена из директории. Метод возвращает срез строк
и ошибку. Если достигнут конец директории, возвращается ошибка
io.EOF, а срез будет пустым.
Синтаксис
names, err := file.Readdirnames(n int)
Пример
Давайте прочитаем все имена файлов из текущей директории:
package 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)
}
Результат выполнения кода:
["file1.txt" "file2.go" "subdir" "main.go"]
Пример
Давайте прочитаем только первые три имени из директории:
package 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)
}
Результат выполнения кода:
["file1.txt" "file2.go" "subdir"]
Пример
Метод возвращает только имена, без полной информации о файлах. Прочитаем имена из директории и выведем каждое имя отдельно:
package 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)
}
}
Результат выполнения кода:
"File: config.yaml"
"File: logs"
"File: output.json"
Смотрите также
-
метод
os.File.Readdir,
который возвращает информацию о файлах в директории -
функцию
os.ReadDir,
которая читает директорию и возвращает срез DirEntry -
функцию
os.Open,
которая открывает файл или директорию для чтения -
функцию
os.File.Close,
которая закрывает открытый файл или директорию