模块 Stdlib.Filename

module Filename: Filename

val current_dir_name : string

当前目录的约定名称(例如,Unix 中的 .)。

val parent_dir_name : string

当前目录父目录的约定名称(例如,Unix 中的 ..)。

val dir_sep : string

目录分隔符(例如,Unix 中的 /)。

val concat : string -> string -> string

concat dir file 返回一个文件名,该文件名指定目录 dir 中的文件 file

val is_relative : string -> bool

如果文件名相对于当前目录,则返回 true;如果文件名是绝对路径(例如,在 Unix 中以 / 开头),则返回 false

val is_implicit : string -> bool

如果文件名是相对路径并且不以对当前目录的显式引用开头(例如,Unix 中的 ./../),则返回 true;如果文件名以对根目录或当前目录的显式引用开头,则返回 false

val check_suffix : string -> string -> bool

check_suffix name suff 如果文件名 name 以后缀 suff 结尾,则返回 true

在 Windows 端口(包括 Cygwin)下,比较不区分大小写,依赖于 String.lowercase_ascii。请注意,这与 Windows 中对不区分大小写文件名等价的解释并不完全匹配。

val chop_suffix : string -> string -> string

chop_suffix name suff 从文件名 name 中删除后缀 suff

val chop_suffix_opt : suffix:string -> string -> string option

chop_suffix_opt ~suffix filename 如果可能,从 filename 中删除后缀;如果文件名不以该后缀结尾,则返回 None

在 Windows 端口(包括 Cygwin)下,比较不区分大小写,依赖于 String.lowercase_ascii。请注意,这与 Windows 中对不区分大小写文件名等价的解释并不完全匹配。

val extension : string -> string

extension namename0 的最短后缀 ext,其中

  • name0name 的最长后缀,不包含目录分隔符;
  • ext 以句点开头;
  • extname0 中至少由一个非句点字符前缀。

如果不存在这样的后缀,则 extension name 为空字符串。

val remove_extension : string -> string

返回给定文件名,不包含其扩展名,如 Filename.extension 中定义。如果扩展名为空,则该函数返回给定文件名。

对于任何文件名 s,以下不变式成立

remove_extension s ^ extension s = s

val chop_extension : string -> string

Filename.remove_extension 相同,但如果给定名称的扩展名为空,则引发 Invalid_argument

val basename : string -> string

将文件名拆分为目录名 / 基本文件名。如果 name 是有效的文件名,则 concat (dirname name) (basename name) 返回一个文件名,该文件名等效于 name。此外,在将当前目录设置为 dirname name(使用 Sys.chdir)后,对 basename name(这是一个相对文件名)的引用将指定与调用 Sys.chdir 之前 name 相同的文件。

此函数符合 POSIX.1-2008 对 basename 实用程序的规范。

val dirname : string -> string

请参阅 Filename.basename。此函数符合 POSIX.1-2008 对 dirname 实用程序的规范。

val null : string

null 在 POSIX 上为 "/dev/null",在 Windows 上为 "NUL"。它代表操作系统上的一个文件,该文件丢弃所有写入,并在读取时返回文件结束符。

val temp_file : ?temp_dir:string -> string -> string -> string

temp_file prefix suffix 返回临时目录中一个新的临时文件的名称。临时文件的基名称由 prefix、一个适当选择的整数值和 suffix 连接而成。可选参数 temp_dir 指示要使用的临时目录,默认为当前结果 Filename.get_temp_dir_name。临时文件为空创建,权限为 0o600(仅文件所有者可读写)。该文件保证与调用 temp_file 时存在的任何其他文件不同。

val open_temp_file : ?mode:open_flag list ->
?perms:int ->
?temp_dir:string -> string -> string -> string * out_channel

Filename.temp_file 相同,但返回一个新的临时文件的名称,以及一个在此文件上(原子地)打开的输出通道。此函数比 temp_file 更安全:在程序打开它之前,不会出现临时文件被修改(例如被符号链接替换)的风险。可选参数 mode 是用于控制文件打开的其他标志列表。它可以包含一个或多个 Open_appendOpen_binaryOpen_text。默认值为 [Open_text](以文本模式打开)。文件使用权限 perms 创建(默认为仅文件所有者可读写,0o600)。

val temp_dir : ?temp_dir:string -> ?perms:int -> string -> string -> string

temp_dir prefix suffix 创建并返回一个新的临时目录的名称,该目录在 temp_dir 内具有权限 perms(默认为 0o700)。临时目录的基名称由 prefix、一个适当选择的整数值和 suffix 连接而成。可选参数 temp_dir 指示要使用的临时目录,默认为当前结果 Filename.get_temp_dir_name。临时目录为空创建,权限为 0o700(仅文件所有者可读写和搜索)。该目录保证与调用 temp_dir 时存在的任何其他目录不同。

如果 temp_dir 不存在,则此函数不会创建它。而是引发 Sys_error。

val get_temp_dir_name : unit -> string

临时目录的名称:在 Unix 下,为 TMPDIR 环境变量的值,如果未设置该变量,则为 "/tmp"。在 Windows 下,为 TEMP 环境变量的值,如果未设置该变量,则为 "."。临时目录可以使用 Filename.set_temp_dir_name 更改。

val set_temp_dir_name : string -> unit

更改由 Filename.get_temp_dir_name 返回并由 Filename.temp_fileFilename.open_temp_file 使用的临时目录。临时目录是一个域本地值,子域会继承它。

val quote : string -> string

返回文件名的引号版本,适合用作命令行中的一个参数,转义所有元字符。警告:在 Windows 下,输出仅适用于遵循标准 Windows 引号约定的程序。

val quote_command : string ->
?stdin:string -> ?stdout:string -> ?stderr:string -> string list -> string

quote_command cmd args 返回一个引号命令行,适合用作 Sys.commandUnix.systemUnix.open_process 函数的参数。

字符串 cmd 是要调用的命令。列表 args 是要传递给此命令的参数列表。它可以为空。

可选参数 ?stdin?stdout?stderr 是用于重定向标准输入、标准输出或命令标准错误的文件名。如果给出 ~stdin:f,则执行重定向 < f,并且命令的标准输入从文件 f 中读取。如果给出 ~stdout:f,则执行重定向 > f,并且命令的标准输出写入文件 f。如果给出 ~stderr:f,则执行重定向 2> f,并且命令的标准错误写入文件 f。如果给出 ~stdout:f~stderr:f,并且使用完全相同的文件名 f,则执行 2>&1 重定向,以便命令的标准输出和标准错误交织并重定向到同一个文件 f

在 Unix 和 Cygwin 下,命令、参数以及可选的重定向使用 Filename.quote 进行引号,然后连接起来。在 Win32 下,将执行由 Sys.command 调用的 cmd.exe shell 所需的附加引号。