An input channel for doing blocking reads from input sources like files and sockets.
Note that an In_channel.t 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.
Note that this is simply another interface on the in_channel type in the OCaml
standard library.
val stdin : tChannels are opened in binary mode iff binary is true. This only has an effect on
Windows.
val create : ?binary:Base.bool ‑> Base.string ‑> tval with_file : ?binary:Base.bool ‑> Base.string ‑> f:(t ‑> 'a) ‑> 'awith_file ~f fname executes ~f on the open channel from
fname, and closes it afterwards.
val input : t ‑> buf:Base.bytes ‑> pos:Base.int ‑> len:Base.int ‑> Base.intval really_input : t ‑> buf:Base.bytes ‑> pos:Base.int ‑> len:Base.int ‑> Base.unit Base.optionval really_input_exn : t ‑> buf:Base.bytes ‑> pos:Base.int ‑> len:Base.int ‑> Base.unitSame as Pervasives.really_input, for backwards compatibility
val input_char : t ‑> Base.char Base.optionRead one character from the given input channel. Return None if there are no more
characters to read.
val input_byte : t ‑> Base.int Base.optionSame 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 ‑> Base.int Base.optionRead 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 input_buffer : t ‑> Base.Buffer.t ‑> len:Base.int ‑> Base.unit Base.optioninput_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 ‑> Base.stringval input_line : ?fix_win_eol:Base.bool ‑> t ‑> Base.string Base.optioninput_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:Base.bool ‑> t ‑> Base.stringval fold_lines : ?fix_win_eol:Base.bool ‑> t ‑> init:'a ‑> f:('a ‑> Base.string ‑> 'a) ‑> 'afold_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:Base.bool ‑> t ‑> Base.string Base.listCompletely reads an input channel and returns the results as a list of strings. Each line in one string.
val iter_lines : ?fix_win_eol:Base.bool ‑> t ‑> f:(Base.string ‑> Base.unit) ‑> Base.unititer_lines ?fix_win_eol t ~f applies f to each line read from t using
input_line.
val seek : t ‑> Base.int64 ‑> Base.unitThis works only for regular files. On files of other kinds, the behavior is unspecified.
val pos : t ‑> Base.int64val length : t ‑> Base.int64Return 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 read_lines : Base.string ‑> Base.string Base.listThese open the filename, read all lines, and close the file.
val read_all : Base.string ‑> Base.string