Функция fs.ReadFile
Функция fs.ReadFile читает содержимое файла и возвращает его в виде байтового среза.
В первый параметр функция принимает файловую систему fs.FS,
во второй параметр - путь к файлу.
Функция возвращает байтовый срез с содержимым файла и ошибку.
Если файл не существует или не может быть прочитан, функция возвращает ошибку.
Эта функция особенно полезна для работы с встроенными файлами и
файловыми системами, реализующими интерфейс fs.ReadFileFS.
Синтаксис
fs.ReadFile(fsys, name)
Пример
Давайте прочитаем содержимое файла "data.txt" с помощью встроенной файловой системы:
package main
import (
"fmt"
"io/fs"
"os"
)
func main() {
content, err := fs.ReadFile(os.DirFS("."), "data.txt")
if err != nil {
fmt.Println("Error:", err)
return
}
fmt.Println(string(content))
}
Результат выполнения кода:
"Hello, World!"
Пример
Давайте обработаем ошибку при попытке чтения несуществующего файла:
package main
import (
"fmt"
"io/fs"
"os"
)
func main() {
content, err := fs.ReadFile(os.DirFS("."), "nonexistent.txt")
if err != nil {
fmt.Println("Error:", err)
return
}
fmt.Println(string(content))
}
Результат выполнения кода:
"Error: open nonexistent.txt: file does not exist"
Пример
Давайте прочитаем файл и проверим его содержимое:
package main
import (
"fmt"
"io/fs"
"os"
)
func main() {
content, err := fs.ReadFile(os.DirFS("."), "config.json")
if err != nil {
fmt.Println("Error:", err)
return
}
if len(content) > 0 {
fmt.Println("File size:", len(content), "bytes")
fmt.Println("First 50 chars:", string(content[:min(50, len(content))]))
}
}
func min(a, b int) int {
if a < b {
return a
}
return b
}
Результат выполнения кода:
"File size: 256 bytes"
"First 50 chars: {\"name\":\"test\",\"value\":123,\"enabled\":true}"
Пример
Давайте прочитаем файл из встроенной файловой системы с использованием вложенных директорий:
package main
import (
"embed"
"fmt"
"io/fs"
)
//go:embed configs/*.json
var configFS embed.FS
func main() {
content, err := fs.ReadFile(configFS, "configs/app.json")
if err != nil {
fmt.Println("Error:", err)
return
}
fmt.Println(string(content))
}
Результат выполнения кода:
"{\"version\":\"1.0.0\",\"debug\":true}"
Смотрите также
-
функцию
os.ReadFile,
которая читает файл напрямую из файловой системы ОС -
функцию
os.WriteFile,
которая записывает данные в файл -
функцию
fs.ReadDir,
которая читает содержимое директории -
функцию
io.ReadAll,
которая читает все данные из ридера