Модуль Filename
module Filename: sig .. end
Операции с именами файлов.
val current_dir_name : string
Традиционное имя текущего каталога (например, . в Unix).
val parent_dir_name : string
Традиционное имя родительского каталога текущего каталога (например, .. в Unix).
val dir_sep : string
Разделитель каталогов (например, / в Unix).
- С версии 3.11.2
val concat : string -> string -> string
concat dir file возвращает имя файла, обозначающее файл file в каталоге dir.
val is_relative : string -> bool
Возвращает true, если имя файла относительно текущего каталога, и false, если оно абсолютное (то есть в Unix начинается с /).
val is_implicit : string -> bool
Возвращает true, если имя файла относительное и не начинается с явной ссылки на текущий каталог (./ или ../ в Unix), и false, если оно начинается с явной ссылки на корневой или текущий каталог.
val check_suffix : string -> string -> bool
check_suffix name suff возвращает true, если имя файла name заканчивается суффиксом suff.
В вариантах для Windows (включая Cygwin) сравнение выполняется без учёта регистра символов с помощью String.lowercase_ascii. Обратите внимание, что это не полностью соответствует трактовке эквивалентности имён файлов без учёта регистра в Windows.
val chop_suffix : string -> string -> string
chop_suffix name suff удаляет суффикс suff из имени файла name.
-
Вызывает исключение
Invalid_argument, еслиnameне заканчивается суффиксомsuff.
val chop_suffix_opt : suffix:string -> string -> string option
chop_suffix_opt ~suffix filename по возможности удаляет суффикс из filename или возвращает None, если имя файла не заканчивается этим суффиксом.
В вариантах для Windows (включая Cygwin) сравнение выполняется без учёта регистра символов с помощью String.lowercase_ascii. Обратите внимание, что это не полностью соответствует трактовке эквивалентности имён файлов без учёта регистра в Windows.
- С версии 4.08
val extension : string -> string
extension name — это самый короткий суффикс ext для name0, такой что:
-
name0— самый длинный суффиксname, не содержащий разделитель каталогов; -
extначинается с точки; -
extпредшествует хотя бы один символ, отличный от точки, вname0.
Если такого суффикса нет, extension name — пустая строка.
- С версии 4.04
val remove_extension : string -> string
Возвращает заданное имя файла без расширения, определяемого в Filename.extension. Если расширение пустое, функция возвращает заданное имя файла.
Для любого имени файла s выполняется следующий инвариант:
remove_extension s ^ extension s = s
- С версии 4.04
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 (которое является относительным именем файла) обозначают тот же файл, что и name до вызова Sys.chdir.
Эта функция соответствует спецификации POSIX.1-2008 для утилиты basename.
val dirname : string -> string
См. Filename.basename. Эта функция соответствует спецификации POSIX.1-2008 для утилиты dirname.
val null : string
null — это "/dev/null" в POSIX и "NUL" в Windows. Это файл в ОС, который отбрасывает все операции записи и возвращает конец файла при чтении.
- С версии 4.10
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.
- До версии 3.11.2 отсутствовал необязательный аргумент ?temp_dir
-
Вызывает исключение
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).
- До версии 4.03 отсутствовал необязательный аргумент ?perms
- До версии 3.11.2 отсутствовал необязательный аргумент ?temp_dir
-
Вызывает исключение
Sys_error, если не удалось открыть файл.
val temp_dir : ?temp_dir:string -> ?perms:int -> string -> string -> string
temp_dir prefix suffix создаёт и возвращает имя нового временного каталога с правами perms (по умолчанию 0o700) внутри temp_dir. Базовое имя временного каталога формируется конкатенацией prefix, затем подходящего целого числа и suffix. Необязательный аргумент temp_dir указывает используемый временный каталог; по умолчанию используется текущее значение Filename.get_temp_dir_name. Временный каталог создаётся пустым с правами 0o700 (чтение, запись и поиск доступны только владельцу каталога). Гарантируется, что этот каталог отличается от всех остальных каталогов, существовавших на момент вызова temp_dir.
Если temp_dir не существует, эта функция не создаёт его, а вызывает Sys_error.
- С версии 5.1
-
Вызывает исключение
Sys_error, если не удалось создать каталог.
val get_temp_dir_name : unit -> string
Имя временного каталога: в Unix — значение переменной окружения TMPDIR или "/tmp", если переменная не задана.
В Windows — значение, возвращаемое GetTempPath2 (если доступно), или GetTempPath.
Временный каталог можно изменить с помощью Filename.set_temp_dir_name.
В Windows до OCaml 5.4 функция возвращала значение переменной окружения TEMP или "." , если переменная не была задана.
- С версии 4.00
val set_temp_dir_name : string -> unit
Изменяет временный каталог, возвращаемый Filename.get_temp_dir_name и используемый функциями Filename.temp_file и Filename.open_temp_file. Временный каталог — это значение, локальное для домена и наследуемое дочерними доменами.
- С версии 4.00
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 дополнительно выполняется экранирование, требуемое оболочкой cmd.exe, вызываемой функцией Sys.command.
- С версии 4.10
-
Вызывает исключение
Failure, если команду нельзя экранировать на текущей платформе.
© 1995-2026 INRIA.
https://ocaml.org/manual/5.5/api/Filename.html