Iter.IO
Basic IO
Very basic interface to manipulate files as iterator of chunks/lines. The iterators take care of opening and closing files properly; every time one iterates over an iterator, the file is opened/closed again.
Example: copy a file "a"
into file "b"
, removing blank lines:
Iterator.(IO.lines_of "a" |> filter (fun l-> l<> "") |> IO.write_lines "b");;
By chunks of 4096
bytes:
Iterator.IO.(chunks_of ~size:4096 "a" |> write_to "b");;
Read the lines of a file into a list:
Iterator.IO.lines "a" |> Iterator.to_list
lines_of filename
reads all lines of the given file. It raises the same exception as would opening the file and read from it, except from End_of_file
(which is caught). The file is always properly closed. Every time the iterator is iterated on, the file is opened again, so different iterations might return different results
Read chunks of the given size
from the file. The last chunk might be smaller. Behaves like lines_of
regarding errors and options. Every time the iterator is iterated on, the file is opened again, so different iterations might return different results
write_to filename seq
writes all strings from seq
into the given file. It takes care of opening and closing the file.
val write_bytes_to :
?mode:int ->
?flags:open_flag list ->
string ->
Stdlib.Bytes.t t ->
unit
Same as write_to
, but intercales '\n'
between each string
val write_bytes_lines :
?mode:int ->
?flags:open_flag list ->
string ->
Stdlib.Bytes.t t ->
unit