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
。