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
。
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
異常。