Legend:
Library
Module
Module type
Parameter
Class
Class type
Library
Module
Module type
Parameter
Class
Class type
File operations with filenames represented by an abstract type FileGen.t
include FileSig.FILE_OPERATIONS
include FileSig.FILENAME_OPERATIONS
val is_absolute : t -> bool
val is_relative : t -> bool
val is_implicit : t -> bool
val check_suffix : t -> string -> bool
val cut_extension : t -> string * string
val cut_extensions : t -> string * string list
val basename : t -> string
val current_dir_name : t
val open_in : t -> Stdlib.in_channel
val open_out : t -> Stdlib.out_channel
val open_in_bin : t -> Stdlib.in_channel
val open_out_bin : t -> Stdlib.out_channel
val open_fd :
t ->
MinUnix.open_flag list ->
MinUnix.file_perm ->
MinUnix.file_descr
val with_in : t -> (Stdlib.in_channel -> unit) -> unit
val with_in_bin : t -> (Stdlib.in_channel -> unit) -> unit
val with_out : t -> (Stdlib.out_channel -> unit) -> unit
val with_out_bin : t -> (Stdlib.out_channel -> unit) -> unit
val exists : t -> bool
val getcwd : unit -> t
val size : t -> int
val is_directory : t -> bool
val is_link : t -> bool
val remove : t -> unit
val stat : t -> MinUnix.stats
val lstat : t -> MinUnix.stats
module OP : sig ... end
val find_in_path : string list -> string -> t
find_in_path path filename
searches a file in a list of directories.
include FileSig.CONTENT_OPERATIONS
with type in_file := t
and type out_file := t
val read_file : t -> string
read_file file
returns the full content of file
. If the file is opened, it is opened in binary mode, no conversion is applied.
val write_file : t -> string -> unit
write_file file content
creates file file
with content content
. If the file is opened, it is opened in binary mode, no conversion is applied.
val read_subfile : t -> int -> int -> string
read_subfile file pos len
returns a string containing len
bytes read from file file
at pos pos
. If the file is opened, it is opened in binary mode. Raises End_of_file
if the file is too short.
val read_lines : t -> string array
read_lines file
returns the content of file
as an array of lines. If the file is opened, it is opened in text mode.
val read_lines_to_list : t -> string list
read_lines_to_list file
returns the content of file
as a list of lines. If the file is opened, it is opened in text mode.
val write_lines : t -> string array -> unit
write_lines file lines
creates the file file
from an array of lines, using FileChannel.output_line
for each line.
val write_lines_of_list : t -> string list -> unit
write_lines file lines
creates the file file
from a list of lines, using FileChannel.output_line
for each line.
val read_sublines : t -> int -> int -> string array
read_sublines file pos len
returns at most len
lines of the file file
, starting at line pos
. It differs from read_subfile
in that it will not raise any exception if the file is too short. Note that it reads the file from beginning everytimes.
val read_sublines_to_list : t -> int -> int -> string list
Same as read_sublines
, but returns a list of strings.
val iter_blocks : (EzCompat.Bytes.t -> int -> unit) -> t -> unit
iter_blocks f file
reads the content of file file
, and calls f buffer len
on each chunk. The buffer
is reused, and only the first len
bytes are from the file. Chunks have a maximal size of 32768.
val iter_lines : (string -> unit) -> t -> unit
iter_lines f file
calls f line
on all the lines line
of the file file
.
val iteri_lines : (int -> string -> unit) -> t -> unit
iteri_lines f file
calls f line_num line
on every line line
of the file file
, with line_num
the line number, starting with line 0.
include FileSig.DIRECTORY_OPERATIONS with type t := t
exception NotADirectory of t
This exception is raised when one of the following functions is called with a non-directory argument
val make_dir : ?mode:int -> ?p:bool -> t -> unit
make_dir ?mode ?p filename
creates a directory filename
, if it does not already exist. It fails with NotADirectory
if the file already exists, but is not a directory. The mode
argument is the Unix permissions (0o755 by default). The p
argument controls whether parents directories should be created as well, if they don't exist, instead of failing.
val onedir : selector
val recdir : selector
val remove_dir : ?all:bool -> ?glob:string -> t -> unit
remove_dir ?all filename
removes directory filename
, or complains the NotADirectory
if it does not exist. The all
argument controls whether the function should recursively remove all files and sub-directories included as well. If glob
is specified, it is called to select files to remove based on their basename, and the directories are not deleted even if all
is true
.
val select :
?deep:bool ->
?dft:[ `After | `Before ] ->
?glob:string ->
?path:string ->
?ignore:string ->
?kinds:Unix.file_kind list ->
?filter:(bool -> string -> bool) ->
?follow_links:bool ->
?error:(exn -> t -> unit) ->
unit ->
selector
select ?deep ?dft ?glob ?filter_rec ?filter_fun ?follow_links
?error ()
creates a selctor to customize a file iterator.
The deep
and dft
arguments controls whether function should recurse (false by default) in sub-directories. If deep
is true
, and ~dft
is not specified, the files are listed in breadth-first mode (a,b,a/x,b/x,a/x/y
for example). If ~dft
is `Before
, the files are listed in depth-first mode, and the ancestors are before their children. If ~dft
is `After
, the are after their children.
The glob
, path
and ignore
arguments can be used to filter the files with regular expressions. glob
is used to choose the files to keep based on their basenames, it is not used for the recursion itself. path
is used to choose the files to keep based on the path, it is not used for the recursion itself. ignore
is used to choose the files to ignore, based on their paths, both during the iteration and the recursion.
The kinds
argument can be used to restrict the files to the ones of a particular kind.
The filter
argument is used to select the files to keep. filter for_rec path
should return true
if the file is ok, false
otherwise. for_rec
is true
if filter
is called to check a directory for recursion, false
if it is called for the iteration.
The follow_links
argument is used to decide if a link to directory should be followed (when deep
is also set).
The error
argument is called when an error occurs, with error
exn filename
. The default behavior is to ignore errors.
read_dir ?select dir
returns the files contained in the directory dir
, recursively. Filenames start from the root of the given directory, i.e. a full filename would be dir / file
.
In a directory, files are sorted in lexicographical order of their names.
Same as read_dir
, but returns a list instead of an array
Same as read_dir
, but calls a function on every file and directory. It is not equivalent to using read_dir
and then itering on the result, as iter_dir
the function is called during the traversal, not after, so concurrent modifications to the directory might become visible.
iterator ?select dir
creates an iterator on directory dir
. The iterator is a function that returns None
when finished, or Some file
with the next file to iter on.
make_select f
transforms f
, a function that takes an optional selector, into a function that builds the selector on the fly.
For example: let () = EzFile.make_select EzFile.iter_dir ~deep:true ~f:(fun path -> ...) dirname
which is equivalent to: let () = let select = EzFile.select ~deep:true () in EzFile.iter_dir ~select ~f:(fun path -> ...) dirname
val mkdir : t -> int -> unit
mkdir filename mode
simply creates the directory filename
with permissions mode
.
val readdir : t -> string array
readdir filename
returns the files contained in directory filename
as an array of strings. The strings are sorted in lexicographical order.
val rmdir : t -> unit
rmdir filename
removes directory filename
, or fails if it does not exist or is not a directory.
val to_string : t -> string
val of_string : string -> t
val of_unix_string : string -> t
val of_win32_string : string -> t
val to_rooted_string : t -> string
val of_path : string -> string list -> t