module Filename:sig
..end
文件名操作。
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
。
name
不以后缀 suff
结尾,则引发 Invalid_argument
。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 name
是 name0
的最短后缀 ext
,其中
name0
是 name
的最长后缀,不包含目录分隔符;ext
以句点开头;ext
在 name0
中至少由一个非句点字符紧接。如果不存在这样的后缀,则 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
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
时存在的任何其他文件不同。
Sys_error
。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_append
、Open_binary
和 Open_text
。默认值为 [Open_text]
(以文本模式打开)。文件以权限 perms
创建(默认为仅文件所有者可读写,0o600
)。
Sys_error
。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。
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_file
和 Filename.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.command
、Unix.system
和 Unix.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 所要求的额外引号。
Failure
。