Module Stdlib.In_channel
Contents
Instructions: Use this module in your project
In the IDE (CLion, Visual Studio Code, Xcode, etc.) you use for your DkSDK project:
Add the following to your project's
dependencies/CMakeLists.txt:DkSDKProject_DeclareAvailable(ocaml CONSTRAINT "= 4.14.0" FINDLIBS str unix runtime_events threads dynlink) DkSDKProject_MakeAvailable(ocaml)Add the
Findlib::ocamllibrary to any desired targets insrc/*/CMakeLists.txt:target_link_libraries(YourPackage_YourLibraryName # ... existing libraries, if any ... Findlib::ocaml)Click your IDE's
Buildbutton
Not using DkSDK?
FIRST, do one or all of the following:
Run:
opam install ocaml.4.14.0Edit your
dune-projectand add:(package (name YourExistingPackage) (depends ; ... existing dependenices ... (ocaml (>= 4.14.0))))Then run:
dune build *.opam # if this fails, run: dune buildEdit your
<package>.opamfile and add:depends: [ # ... existing dependencies ... "ocaml" {>= "4.14.0"} ]Then run:
opam install . --deps-only
FINALLY, add the library to any desired (library)and/or (executable) targets in your **/dune files:
(library
(name YourLibrary)
; ... existing library options ...
(libraries
; ... existing libraries ...
))
(executable
(name YourExecutable)
; ... existing executable options ...
(libraries
; ... existing libraries ...
))typet`` =in_channel
The type of input channel.
typeopen_flag`` =open_flag=
|Open_rdonly(* open for reading.
*)
|Open_wronly(* open for writing.
*)
|Open_append(* open for appending: always write at end of file.
*)
|Open_creat(* create the file if it does not exist.
*)
|Open_trunc(* empty the file if it already exists.
*)
|Open_excl(* fail if Open_creat and the file already exists.
*)
|Open_binary(* open in binary mode (no conversion).
*)
|Open_text(* open in text mode (may perform conversions).
*)
|Open_nonblock(* open in non-blocking mode.
*)
Opening modes for open_gen.
valstdin :t
The standard input for the process.
valopen_bin : ``string->t
Open the named file for reading, and return a new input channel on that file, positioned at the beginning of the file.
valopen_text : ``string->t
valwith_open_bin : ``string->``(t->'a)``->'a
with_open_bin fn f opens a channel ic on file fn and returns
f ic. After f returns, either with a value or by raising an
exception, ic is guaranteed to be closed.
valwith_open_text : ``string->``(t->'a)``->'a
Like with_open_bin, but the channel is opened in
text mode (see open_text).
Like with_open_bin, but can specify the opening
mode and file permission, in case the file must be created (see
open_gen).
valseek :t->``int64->unit
seek chan pos sets the current reading position to pos for channel
chan. This works only for regular files. On files of other kinds, the
behavior is unspecified.
valpos :t->int64
Return the current reading position for the given channel. For files
opened in text mode under Windows, the returned position is approximate
(owing to end-of-line conversion); in particular, saving the current
position with pos, then going back to this position using
seek will not work. For this programming idiom to work
reliably and portably, the file must be opened in binary mode.
vallength :t->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.
valclose :t->unit
Close the given channel. Input functions raise a Sys_error exception
when they are applied to a closed input channel, except
close, which does nothing when applied to an already
closed channel.
valinput_char :t->``char option
Read one character from the given input channel. Returns None if there
are no more characters to read.
valinput_byte :t->``int option
Same as input_char, but return the 8-bit integer
representing the character. Returns None if the end of file was
reached.
valinput_line :t->``string option
input_line ic reads characters from ic until a newline or the end of
file is reached. Returns the string of all characters read, without the
newline (if any). Returns None if the end of the file has been
reached. In particular, this will be the case if the last line of input
is empty.
A newline is the character \n unless the file is open in text mode and
Sys.win32 is true in which case it is
the sequence of characters \r\n.
valinput :t->``bytes->``int->``int->int
input ic buf pos len reads up to len characters from the given
channel ic, storing them in byte sequence buf, starting at character
number pos. It returns the actual number of characters read, between 0
and len (inclusive). A return value of 0 means that the end of file
was reached.
Use really_input to read exactly len
characters.
-
raises Invalid_argument
if
posandlendo not designate a valid range ofbuf.
valreally_input :t->``bytes->``int->``int->``unit option
really_input ic buf pos len reads len characters from channel ic,
storing them in byte sequence buf, starting at character number pos.
Returns None if the end of file is reached before len characters
have been read.
-
raises Invalid_argument
if
posandlendo not designate a valid range ofbuf.
valreally_input_string :t->``int->``string option
really_input_string ic len reads len characters from channel ic
and returns them in a new string. Returns None if the end of file is
reached before len characters have been read.
valinput_all :t->string
input_all ic reads all remaining data from ic.
valset_binary_mode :t->``bool->unit
set_binary_mode ic true sets the channel ic to binary mode: no
translations take place during input.
set_binary_mode ic false sets the channel ic to text mode: depending
on the operating system, some translations may take place during input.
For instance, under Windows, end-of-lines will be translated from \r\n
to \n.
This function has no effect under operating systems that do not distinguish between text mode and binary mode.
