Модуль 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 символов.
-
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/4.14/htmlman/libref/In_channel.html