文件名
Filename函数位于类Filename中。默认情况下,此类不是打开的,建议通过显式限定调用以下函数 Filename:: .
路径分隔符
返回系统路径分隔符的函数, / 在Unix上,在Windows上为“\”:
fun sep: 1 -> string;
路径类型
一种检测文件名是绝对文件名还是相对文件名的函数
fun is_absolute_filename : string -> bool;
根
返回文件系统根目录名的函数, / 在Unix和Windows上为“C:”:
virtual fun root_subdir : string -> string;
二进制代码文件扩展名
返回扩展名(包括点)的函数
virtual fun executable_extension : 1 -> string;
virtual fun static_object_extension: 1 -> string;
virtual fun dynamic_object_extension: 1 -> string;
virtual fun static_library_extension: 1 -> string;
virtual fun dynamic_library_extension: 1 -> string;
路径分割
split1返回一对由目录名和basename组成的对,它们之间的分隔符将丢失,除非是“/x”,其中“/”作为目录名。如果没有分隔符,则路径为基名,目录名为空字符串(不是!!!!)
fun split1(s:string): string * string;
将文件名拆分为组件列表。
fun split(s:string)=> split (s, List::Empty[string]);
获取路径(最后一个组件)的基名。
fun basename(s:string) :string;
获取路径的目录名(除最后一个组件外的所有目录名)。
fun dirname(s:string) : string;
返回路径中所有目录名的列表。例如a/b/c给出“a”、“a/b”
fun directories (s:string) : list[string];
分开分机。包括圆点。不变量:输入=基名称+扩展名。向后工作,直到碰到点、路径分隔符或数据结尾。如果是一个点,则去掉它和字符串的尾部,否则返回原始字符串。
fun split_extension (s:string): string * string;
从文件名中删除扩展名(如果有)。
fun strip_extension (s:string) => s.split_extension.0;
如果有扩展名,请获取扩展名。包括圆点。
fun get_extension (s:string) => s.split_extension.1;
路径连接
将两个路径名合并为一个路径名。split和join在逻辑上是相反的,但是join不是关联的:join(“x”,join(“,”y“))=”x/y“,而join(join(“x”,“”),“y”)=“x//y”,因为split将组件从RHS中拉出,所以我们必须从左边将它们折回来
fun join(p:string, b:string) : string;
请注意,通常在代码中编写:
fun /(p:string, b:string) => Filename::join (p,b);
将列表中的所有字符串连接到一个路径名中。
fun join(ps: List::list[string]): string;