Имена файлов во встроенной папке в Go
Иногда нужно узнать, какие файлы лежат внутри набора, а не только прочитать один заранее известный путь. Для этого у набора есть команда списка содержимого каталога.
Сначала получают записи каталога, затем
берут имя нужного файла и снова вызывают
чтение по полному пути от корня вшитой
папки. Пустые подпапки и служебные точки
в списке пропускают по смыслу задачи.
Аргумент ReadDir это каталог
внутри набора, пути с прямым слэшем.
В files лежат a.txt и b.txt;
перечислим каталог и прочитаем b.txt:
package main
import (
"embed"
"fmt"
)
//go:embed files
var box embed.FS
func main() {
entries, err := box.ReadDir("files")
if err != nil {
fmt.Println("error")
return
}
for _, e := range entries {
fmt.Println(e.Name())
}
data, err := box.ReadFile("files/b.txt")
if err != nil {
fmt.Println("error")
return
}
fmt.Println(string(data))
}
Содержимое files/b.txt:
second
Дана папка files:
one
two
Выведите число файлов в files через
ReadDir и текст y.txt.
Дана папка cfg с одним файлом
cfg/app.txt и текстом "on".
Напишите аргумент для ReadDir и
полный путь для чтения этого файла.
Скажите, почему после списка имен все
равно передают полный путь в ReadFile,
а не только имя из Name().