Spec-Zone.ru › OCaml 5.0

Модуль 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
    ic
. После того как f возвращает значение или вызывает исключение, 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API