tgoop.com/thank_go/169
Create:
Last Update:
Last Update:
Go 1.24: os.Root
Новый тип os.Root ограничивает операции с файловой системой определенной директорией.
Функция OpenRoot открывает директорию и возвращает Root:
dir, err := os.OpenRoot("data")
fmt.Println(dir.Name(), err)
// data <nil>
Методы Root работают внутри директории и не позволяют использовать пути за ее пределами:
file, err := dir.Open("01.txt")
fmt.Println(file.Name(), err)
// data/01.txt <nil>
file, err = dir.Open("../main.txt")
fmt.Println(err)
// openat ../main.txt: path escapes from parent
Методы Root поддерживают большинство операций с файловой системой, доступных в пакете os:
file, err := dir.Create("new.txt")
stat, err := dir.Stat("02.txt")
err = dir.Remove("03.txt")
Поработав с Root, не забудьте
dir, err := os.OpenRoot(path)
defer dir.Close()
// do stuff
На большинстве платформ создание Root открывает файловый дескриптор. Если директорию переместить пока Root открыт, методы будут корректно использовать новый каталог.
BY Thank Go!
Share with your friend now:
tgoop.com/thank_go/169