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::ocaml
library to any desired targets insrc/*/CMakeLists.txt
:target_link_libraries(YourPackage_YourLibraryName # ... existing libraries, if any ... Findlib::ocaml)
Click your IDE's
Build
button
Not using DkSDK?
FIRST, do one or all of the following:
Run:
opam install ocaml.4.14.0
Edit your
dune-project
and add:(package (name YourExistingPackage) (depends ; ... existing dependenices ... (ocaml (>= 4.14.0))))
Then run:
dune build *.opam # if this fails, run: dune build
Edit your
<package>.opam
file 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 ...
))
type
t`` =
in_channel
The type of input channel.
type
open_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
.
val
stdin :
t
The standard input for the process.
val
open_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.
val
open_text : ``string
->
t
val
with_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.
val
with_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
).
val
seek :
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.
val
pos :
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.
val
length :
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.
val
close :
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.
val
input_char :
t
->
``char option
Read one character from the given input channel. Returns None
if there
are no more characters to read.
val
input_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.
val
input_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
.
val
input :
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
pos
andlen
do not designate a valid range ofbuf
.
val
really_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
pos
andlen
do not designate a valid range ofbuf
.
val
really_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.
val
input_all :
t
->
string
input_all ic
reads all remaining data from ic
.
val
set_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.