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 : t
Channels are opened in binary mode iff binary
is true. This only has an effect on
Windows.
val create : ?binary:Base.bool ‑> Base.string ‑> t
val with_file : ?binary:Base.bool ‑> Base.string ‑> f:(t ‑> 'a) ‑> 'a
with_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.int
val really_input : t ‑> buf:Base.bytes ‑> pos:Base.int ‑> len:Base.int ‑> Base.unit Base.option
val really_input_exn : t ‑> buf:Base.bytes ‑> pos:Base.int ‑> len:Base.int ‑> Base.unit
Same as Pervasives.really_input
, for backwards compatibility
val input_char : t ‑> Base.char Base.option
Read one character from the given input channel. Return None
if there are no more
characters to read.
val input_byte : t ‑> Base.int Base.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 ‑> Base.int Base.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 input_buffer : t ‑> Base.Buffer.t ‑> len:Base.int ‑> Base.unit Base.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 ‑> Base.string
val input_line : ?fix_win_eol:Base.bool ‑> t ‑> Base.string Base.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:Base.bool ‑> t ‑> Base.string
val fold_lines : ?fix_win_eol:Base.bool ‑> t ‑> init:'a ‑> f:('a ‑> Base.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:Base.bool ‑> t ‑> Base.string Base.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:Base.bool ‑> t ‑> f:(Base.string ‑> Base.unit) ‑> Base.unit
iter_lines ?fix_win_eol t ~f
applies f
to each line read from t
using
input_line
.
val seek : t ‑> Base.int64 ‑> Base.unit
This works only for regular files. On files of other kinds, the behavior is unspecified.
val pos : t ‑> Base.int64
val length : t ‑> Base.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 read_lines : Base.string ‑> Base.string Base.list
These open the filename, read all lines, and close the file.
val read_all : Base.string ‑> Base.string