pub def Path: str
以空字符结尾的文件系统路径
pub fun separator() u8;
平台路径分隔符字符,由构造时发出
ret:目标平台首选的分隔符字节
pub fun is_separator(c: u8) bool;
检查 c 是否为目标平台上的路径组件分隔符
Windows 同时接受 / 和 \;POSIX 仅将 / 视为分隔符。
c:要测试的字节 ret:当 c 是分隔符时为 true
pub fun has_separator(p: Path) bool;
检查 p 是否包含任何路径分隔符
ret:当 p 的至少一个字节分隔了组件时为 true
pub fun is_empty(p: Path) bool;
检查路径是否为空或 nil
ret:如果路径为 nil 或长度为零则为 true
pub fun is_abs(p: Path) bool;
检查路径是否为绝对路径
当路径以分隔符(POSIX 或 UNC 根目录)开头,或者在 Windows 上以盘符根目录 'X:\' / 'X:/' 开头时,它就是绝对路径。裸盘符引用 'C:' 或 'C:foo' 是盘符相对路径,而不是绝对路径。
ret:当 p 是绝对路径时为 true
pub fun is_root(p: Path) bool;
检查路径是否为根单元
当 p 仅包含分隔符,或者(在 Windows 上)恰好是盘符或 UNC 根目录后跟任意尾随分隔符时为 true。
ret:当 p 恰好是根单元时为 true
pub fun seg_count(p: Path) usize;
计算路径的净目录深度
遍历 p 中由 is_separator 分隔的片段:真实的片段增加一层,'.' 片段没有贡献,'..' 片段爬升一层,并带有夹具(clamped)使得深度绝不会低于零。空运行(前导、尾随或重复的分隔符)没有贡献。结果是 p 从其锚点(anchor)下降了多远 —— 即从 p 爬回该锚点所需的 '..' 计数 —— 这就是为什么 '..' 会递减,且下限在根目录处保持相对爬升的原因。
p:要测量的路径 ret:净片段深度,对于 nil、空路径、根路径或完全向上爬升的路径为零
pub fun filename(p: Path) str;
返回路径的最后组件(文件名)
返回指向 p 内部的指针(无分配)。对于空路径返回 nil,对于以分隔符结尾的路径返回空字符串。
p:从中提取文件名的路径 ret:指向 p 中文件名的指针,或 nil
pub fun extension(p: Path) str;
返回不带前导点(.)的文件扩展名
返回指向 p 内部的指针(无分配)。如果没有扩展名(没有点,或者点是文件名的第一个字符),则返回 nil。
p:从中提取扩展名的路径 ret:指向 p 中扩展名的指针,或 nil
pub fun stem(a: *allocator.Allocator, p: Path) R.Result[Path, str];
返回不带扩展名的文件名(主干 stem)
"foo/bar.txt" → "bar", "foo/.hidden" → ".hidden", "foo/bar" → "bar"
a:结果的分配器 p:从中提取主干的路径 ret:主干,或错误消息
pub fun clone(a: *allocator.Allocator, p: Path) R.Result[Path, str];
使用提供的分配器复制路径
a:新路径的分配器 p:要克隆的路径(nil 返回 nil) ret:克隆后的路径,或错误消息
pub fun join(a: *allocator.Allocator, left: Path, right: Path) R.Result[Path, str];
使用平台分隔符连接两个路径段
a:结果路径的分配器 left:左路径段 right:右路径段 ret:连接后的路径,或错误消息
pub fun parent(a: *allocator.Allocator, p: Path) R.Result[Path, str];
返回路径的父目录
a:结果路径的分配器 p:获取其父目录的路径 ret:父目录路径,或错误消息
pub fun resolve(a: *allocator.Allocator, base: Path, p: Path) R.Result[Path, str];
针对 base 解析 p:绝对路径 p 会被原样克隆,相对路径 p 会连接到 base 上
a:结果的分配器 base:相对路径 p 的基准目录 p:要解析的路径 ret:解析后的路径,或错误