Library
Module
Module type
Parameter
Class
Class type
module M : sig ... end
exception NotADirectory of M.path
This exception is raised when one of the following functions is called with a non-directory argument
val make_dir : ?mode:int -> ?p:bool -> M.path -> 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 remove_dir : ?all:bool -> ?glob:string -> M.path -> 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, and the directories are not deleted even if all
is true
.
val select :
?deep:bool ->
?dft:[ `After | `Before ] ->
?glob:string ->
?filter:(bool -> string -> string -> bool) ->
?follow_links:bool ->
?error:(exn -> string -> M.path -> unit) ->
unit ->
M.path FileSelector.t
select ?deep ?dft ?glob ?filter ?follow_links ?error ()
creates a selctor to customize a file iterator.
The deep
and dft
arguments controls whether function should recurse 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
argument can be used to filter the basenames of files with a regular expression.
The filter
argument is called as filter is_dir basename path
where is_dir
is set when checking whether to enter or not into a sub-directory, basename
is the basename of the file and path
is the path starting with a '/', yet relative to the initial directory. filter
is called on every file with is_dir
false to decide whether it should be added or not, and only on sub-directories with is_dir
true to decide whether to enter or not if deep
is true.
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 path filename
.
val read_dir : ?select:M.path FileSelector.t -> M.path -> M.path array
read_dir ?select filename
returns the files contained in the directory filename
.
In a directory, files are sorted in lexicographical order of their names.
val read_dir_to_list : ?select:M.path FileSelector.t -> M.path -> M.path list
Same as read_dir
, but returns a list instead of an array
val iter_dir :
?select:M.path FileSelector.t ->
(basename:string -> localpath:string -> file:M.path -> unit) ->
M.path ->
unit
Same as read_dir
, but calls a function on every file and directory with the basename, the relative path (yet, starting with a '/') and the filename (i.e. the directory name concatenated with the relative path): f basename path file
. 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.
val iterator :
?select:M.path FileSelector.t ->
M.path ->
unit ->
(string * M.path) option
iterator ?select dir
creates an iterator on directory dir
. The iterator is a function that returns None
when finished, or Some (path, filename)
with the next file to iter on.
val mkdir : M.path -> int -> unit
mkdir filename mode
simply creates the directory filename
with permissions mode
.
val readdir : M.path -> 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 : M.path -> unit
rmdir filename
removes directory filename
, or fails if it does not exist or is not a directory.