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

Функция fs.Sub

Функция fs.Sub создает новую файловую систему, которая представляет собой поддерево указанной файловой системы. В первый параметр передается исходная файловая система, во второй параметр - путь к директории внутри этой файловой системы, которая станет корнем новой файловой системы. Функция возвращает новую файловую систему и ошибку, если указанная директория не существует или недоступна.

Синтаксис

fs.Sub(fsys fs.FS, dir string) (fs.FS, error)

Пример

Давайте создадим новую файловую систему, которая будет представлять поддерево директории "static" в существующей файловой системе:

package main import ( "fmt" "io/fs" "os" ) func main() { staticFS, err := fs.Sub(os.DirFS("."), "static") if err != nil { fmt.Println("Error:", err) return } entries, err := fs.ReadDir(staticFS, ".") if err != nil { fmt.Println("Error:", err) return } for _, entry := range entries { fmt.Println(entry.Name()) } }

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

"index.html" "css" "js" "images"

В этом примере мы создали новую файловую систему staticFS, которая работает с содержимым директории "static", как будто это корневая директория.

Пример

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

package main import ( "fmt" "io/fs" "os" ) func main() { subFS, err := fs.Sub(os.DirFS("."), "static") if err != nil { fmt.Println("Error:", err) return } data, err := fs.ReadFile(subFS, "index.html") if err != nil { fmt.Println("Error:", err) return } fmt.Println(string(data)) }

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

"<!DOCTYPE html><html><head><title>Hello</title></head></html>"

Обратите внимание, что при работе с новой файловой системой путь "index.html" интерпретируется относительно директории "static", а не корня исходной файловой системы.

Пример

Давайте проверим, что будет при попытке создать поддерево для несуществующей директории:

package main import ( "fmt" "io/fs" "os" ) func main() { subFS, err := fs.Sub(os.DirFS("."), "nonexistent") if err != nil { fmt.Println("Error:", err) return } _, err = fs.ReadDir(subFS, ".") if err != nil { fmt.Println("Error:", err) } }

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

"Error: open nonexistent: no such file or directory"

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

  • функцию fs.SubFS,
    которая определяет интерфейс для файловых систем с поддержкой поддеревьев
  • функцию fs.ReadDir,
    которая читает содержимое директории в файловой системе
  • функцию fs.ReadFile,
    которая читает содержимое файла из файловой системы
  • функцию os.DirFS,
    которая создает файловую систему из директории операционной системы
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить