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

Интерфейс fs.FS

Интерфейс fs.FS определяет методы для работы с файловой системой. В первый параметр метод Open принимает путь к файлу в виде строки, возвращая интерфейс fs.File и ошибку. Этот интерфейс позволяет абстрагироваться от конкретной реализации файловой системы, будь то реальная файловая система, встроенные ресурсы или виртуальные файловые системы.

Синтаксис

type FS interface { Open(name string) (fs.File, error) }

Пример использования с os.DirFS

Рассмотрим пример создания файловой системы из реальной директории с помощью функции os.DirFS и чтения содержимого файла:

package main import ( "fmt" "io" "os" "io/fs" ) func main() { // Создаем FS из текущей директории filesystem := os.DirFS(".") // Открываем файл file, err := filesystem.Open("example.txt") if err != nil { fmt.Println("Error opening file:", err) return } defer file.Close() // Читаем содержимое файла content, err := io.ReadAll(file) if err != nil { fmt.Println("Error reading file:", err) return } fmt.Println(string(content)) }

Пример работы с fs.Sub

Функция fs.Sub создает новую файловую систему, которая видит только содержимое указанной поддиректории:

package main import ( "fmt" "os" "io/fs" ) func main() { // Создаем FS из текущей директории rootFS := os.DirFS(".") // Создаем подчиненную FS для папки "data" subFS, err := fs.Sub(rootFS, "data") if err != nil { fmt.Println("Error creating sub FS:", err) return } // Открываем файл в подчиненной FS file, err := subFS.Open("config.json") if err != nil { fmt.Println("Error opening file:", err) return } defer file.Close() // Получаем информацию о файле info, err := file.Stat() if err != nil { fmt.Println("Error getting file info:", err) return } fmt.Println("File size:", info.Size()) }

Пример чтения директории

Интерфейс fs.ReadDirFS расширяет fs.FS методом ReadDir для чтения содержимого директории:

package main import ( "fmt" "os" "io/fs" ) func main() { // Создаем FS из текущей директории filesystem := os.DirFS(".") // Проверяем, поддерживает ли FS чтение директорий if readDirFS, ok := filesystem.(fs.ReadDirFS); ok { // Читаем содержимое директории entries, err := readDirFS.ReadDir(".") if err != nil { fmt.Println("Error reading directory:", err) return } // Выводим имена файлов for _, entry := range entries { fmt.Println(entry.Name()) } } }

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

  • интерфейс fs.File,
    который представляет открытый файл в файловой системе
  • интерфейс fs.FileInfo,
    который содержит информацию о файле
  • интерфейс fs.DirEntry,
    который представляет элемент директории
  • функцию fs.Sub,
    которая создает подчиненную файловую систему
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить