Module Stdio.In_channel

In_channel collects all of the pervasive functions that work on in_channels.

Note that an in_channel is a custom block with a finalizer, and so is allocated directly to the major heap. Creating a lot of in_channels can result in many major collections and poor performance.

type t = Caml.in_channel
val stdin : t

Channels are opened in binary mode iff binary is true. This only has an effect on Windows.

val create : ?binary:Stdio__.Import.bool ‑> Stdio__.Import.string ‑> t
val with_file : ?binary:Stdio__.Import.bool ‑> Stdio__.Import.string ‑> f:(t ‑> 'a) ‑> 'a

with_file ~f fname executes ~f on the open channel from fname, and closes it afterwards.

val close : t ‑> Stdio__.Import.unit

close t closes t, or does nothing if t is already closed, and may raise an exception.

val input : t ‑> buf:Stdio__.Import.string ‑> pos:Stdio__.Import.int ‑> len:Stdio__.Import.int ‑> Stdio__.Import.int
val really_input : t ‑> buf:Stdio__.Import.string ‑> pos:Stdio__.Import.int ‑> len:Stdio__.Import.int ‑> Stdio__.Import.unit Stdio__.Import.option
val really_input_exn : t ‑> buf:Stdio__.Import.string ‑> pos:Stdio__.Import.int ‑> len:Stdio__.Import.int ‑> Stdio__.Import.unit

Same as Pervasives.really_input, for backwards compatibility

val input_char : t ‑> Stdio__.Import.char Stdio__.Import.option

Read one character from the given input channel. Return None if there are no more characters to read.

val input_byte : t ‑> Stdio__.Import.int Stdio__.Import.option

Same as input_char, but return the 8-bit integer representing the character. Return None if an end of file was reached.

val input_binary_int : t ‑> Stdio__.Import.int Stdio__.Import.option

Read an integer encoded in binary format (4 bytes, big-endian) from the given input channel. See Pervasives.output_binary_int. Return None if an end of file was reached while reading the integer.

val unsafe_input_value : t ‑> _ Stdio__.Import.option

Ocaml's built-in marshal format

val input_buffer : t ‑> Stdio__.Import.Buffer.t ‑> len:Stdio__.Import.int ‑> Stdio__.Import.unit Stdio__.Import.option

input_buffer t buf ~len reads at most len characters from the input channel t and stores them at the end of buffer buf. Return None if the channel contains fewer than len characters. In this case, the characters are still added to the buffer, so as to avoid loss of data.

val input_all : t ‑> Stdio__.Import.string
val input_line : ?fix_win_eol:Stdio__.Import.bool ‑> t ‑> Stdio__.Import.string Stdio__.Import.option

input_line ?fix_win_eol t reads a line from t and returns it, without the newline ("\n") character at the end, and, if fix_win_eol the trailing "\r\n" is dropped.

val input_line_exn : ?fix_win_eol:Stdio__.Import.bool ‑> t ‑> Stdio__.Import.string
val fold_lines : ?fix_win_eol:Stdio__.Import.bool ‑> t ‑> init:'a ‑> f:('a ‑> Stdio__.Import.string ‑> 'a) ‑> 'a

fold_lines ?fix_win_eol t ~init ~f folds over the lines read from t using input_line. Lines are provided to f in the order they are found in the file.

val input_lines : ?fix_win_eol:Stdio__.Import.bool ‑> t ‑> Stdio__.Import.string Stdio__.Import.list

Completely reads an input channel and returns the results as a list of strings. Each line in one string.

val iter_lines : ?fix_win_eol:Stdio__.Import.bool ‑> t ‑> f:(Stdio__.Import.string ‑> Stdio__.Import.unit) ‑> Stdio__.Import.unit

iter_lines ?fix_win_eol t ~f applies f to each line read from t using input_line.

val seek : t ‑> Stdio__.Import.int64 ‑> Stdio__.Import.unit

This works only for regular files. On files of other kinds, the behavior is unspecified.

val pos : t ‑> Stdio__.Import.int64
val length : t ‑> Stdio__.Import.int64

Return the size (number of characters) of the regular file on which the given channel is opened. If the channel is opened on a file that is not a regular file, the result is meaningless. The returned size does not take into account the end-of-line translations that can be performed when reading from a channel opened in text mode.

val set_binary_mode : t ‑> Stdio__.Import.bool ‑> Stdio__.Import.unit

same as Pervasives.set_binary_mode_in, only applicable for Windows or Cygwin, no-op otherwise

val read_lines : Stdio__.Import.string ‑> Stdio__.Import.string Stdio__.Import.list

These open the filename, read all lines, and close the file.

val read_all : Stdio__.Import.string ‑> Stdio__.Import.string