Модуль In_channel
module In_channel: sig .. end
Вводные каналы.
- Since 4.14.0
type t = in_channel
Тип вводного канала.
type open_flag = open_flag =
|
| Open_rdonly
| (* |
открыт для чтения. |
*) |
|
| Open_wronly
| (* |
открыт для записи. |
*) |
|
| Open_append
| (* |
открыт для добавления: всегда записывается в конец файла. |
*) |
|
| Open_creat
| (* |
создать файл, если он не существует. |
*) |
|
| Open_trunc
| (* |
очистить файл, если он уже существует. |
*) |
|
| Open_excl
| (* |
не удается, если Open_creat и файл уже существует. |
*) |
|
| Open_binary
| (* |
открыть в двоичном режиме (без преобразования). |
*) |
|
| Open_text
| (* |
открыть в текстовом режиме (может выполнять преобразования). |
*) |
|
| Open_nonblock
| (* |
открыть в режиме без блокировки. |
*) |
Режимы открытия для In_channel.open_gen.
val stdin : t
Стандартный ввод для процесса.
val open_bin : string -> t
Открыть именованный файл для чтения и вернуть новый вводной канал на этом файле, расположенный в начале файла.
val open_text : string -> t
То же, что и In_channel.open_bin, но файл открывается в текстовом режиме, чтобы перевод новой строки происходил во время чтения. В операционных системах, которые не различают текстовый и двоичный режимы, эта функция ведет себя как In_channel.open_bin.
val open_gen : open_flag list -> int -> string -> t
open_gen mode perm filename открывает именованный файл для чтения, как описано выше. Дополнительные аргументы mode и perm указывают режим открытия и разрешения файла. In_channel.open_text и In_channel.open_bin являются специальными случаями этой функции.
val with_open_bin : string -> (t -> 'a) -> 'a
with_open_bin fn f открывает канал ic на файле fn и возвращает f. После того как
icf возвращает значение или вызывает исключение, ic гарантированно будет закрыт.
val with_open_text : string -> (t -> 'a) -> 'a
Как In_channel.with_open_bin, но канал открывается в текстовом режиме (см. In_channel.open_text).
val with_open_gen : open_flag list -> int -> string -> (t -> 'a) -> 'a
Как In_channel.with_open_bin, но может указать режим открытия и разрешения файла, в случае если файл должен быть создан (см. In_channel.open_gen).
val seek : t -> int64 -> unit
seek chan pos устанавливает текущую позицию чтения в pos для канала chan. Это работает только для обычных файлов. Для файлов других типов поведение не определено.
val pos : t -> int64
Возвращает текущую позицию чтения для данного канала. Для файлов, открытых в текстовом режиме в Windows, возвращаемая позиция приблизительна (из-за преобразования конца строки); в частности, сохранение текущей позиции с помощью In_channel.pos, а затем возврат к этой позиции с помощью In_channel.seek не будет работать. Для того чтобы этот фрагмент кода работал надежно и переносимо, файл должен быть открыт в двоичном режиме.
val length : t -> int64
Возвращает размер (количество символов) обычного файла, на котором открыт данный канал. Если канал открыт на файле, который не является обычным файлом, результат не имеет смысла. Возвращаемый размер не учитывает преобразования конца строки, которые могут выполняться при чтении из канала, открытого в текстовом режиме.
val close : t -> unit
Закрыть данный канал. Вводные функции вызывают исключение Sys_error при применении к закрытому вводному каналу, за исключением In_channel.close, которая ничего не делает, когда применяется к уже закрытому каналу.
val close_noerr : t -> unit
То же, что и In_channel.close, но игнорирует все ошибки.
val input_char : t -> char option
Прочитать один символ из данного входного канала. Возвращает None если больше нет символов для чтения.
val input_byte : t -> int option
То же, что и In_channel.input_char, но возвращает 8-битовое целое число, представляющее символ. Возвращает None если достигнут конец файла.
val input_line : t -> string option
input_line ic считывает символы из ic до тех пор, пока не будет достигнута новая строка или конец файла. Возвращает строку всех прочитанных символов без новой строки (если таковая имеется). Возвращает None если достигнут конец файла. В частности, это будет иметь место, если последняя строка ввода пустая.
Новая строка — это символ \n если файл открыт в текстовом режиме и Sys.win32 имеет значение true, в этом случае это последовательность символов \r\n.
val input : t -> bytes -> int -> int -> int
input ic buf pos len считывает до len символов из заданного канала ic, сохраняя их в последовательности байтов buf, начиная с символа с номером pos. Возвращает фактическое количество прочитанных символов, от 0 до len (включительно). Значение 0 означает, что достигнут конец файла.
Используйте In_channel.really_input, чтобы прочитать ровно len символов.
-
Raises
Invalid_argumentеслиposиlenне обозначают допустимый диапазонbuf.
val really_input : t -> bytes -> int -> int -> unit option
really_input ic buf pos len считывает len символов из канала ic, сохраняя их в последовательности байтов buf, начиная с символа с номером pos.
Возвращает None если конец файла достигнут до того, как было прочитано len символов.
Если один и тот же канал читается одновременно несколькими потоками, байты, считанные с помощью really_input, не гарантируются как непрерывные.
-
Raises
Invalid_argumentеслиposиlenне обозначают допустимый диапазонbuf.
val really_input_string : t -> int -> string option
really_input_string ic len считывает len символов из канала ic и возвращает их в новой строке. Возвращает None, если конец файла достигнут до того, как будет считано len символов.
Если один и тот же канал читается одновременно несколькими потоками, нет гарантии, что возвращаемая строка будет содержать непрерывные символы из входных данных.
val input_all : t -> string
input_all ic считывает все оставшиеся данные из ic.
Если один и тот же канал читается одновременно несколькими потоками, нет гарантии, что возвращаемая строка будет содержать непрерывные символы из входных данных.
val set_binary_mode : t -> bool -> unit
set_binary_mode ic true устанавливает канал ic в двоичный режим: никакие преобразования не выполняются во время ввода.
set_binary_mode ic false устанавливает канал ic в текстовый режим: в зависимости от операционной системы, некоторые преобразования могут выполняться во время ввода. Например, в Windows, символы конца строки будут преобразовываться из \r\n в \n.
Эта функция не имеет эффекта в операционных системах, которые не различают текстовый и двоичный режимы.
© 1995-2022 INRIA.
https://v2.ocaml.org/releases/5.0/htmlman/libref/In_channel.html