Existence
val exists : Fpath.t -> (bool, string) Stdlib.result
exists p
is Ok true
if p
exists in the file system and Ok false
otherwise. Symbolic links are followed.
val must_exist : Fpath.t -> (unit, string) Stdlib.result
must_exist p
is Ok ()
if p
exists in the file system and an error otherwise. Symbolic links are followed.
Deleting and renaming
val delete : recurse:bool -> Fpath.t -> (bool, string) Stdlib.result
delete ~recurse p
deletes p
from the file system. If p
is a symbolic link this only deletes the link, not the linked object. If recurse
is true
and p
is a non-empty directory, no error occurs, its contents is recursively deleted. The result is:
Ok true
, ifp
existed and was deleted.Ok false
, if the pathp
did not exist on the file system.Error _
in case of error, in particular ifp
is a non-empty directory andrecurse
isfalse
.
See also File.delete
.
val rename : force:bool -> make_path:bool -> src:Fpath.t -> Fpath.t -> (unit, string) Stdlib.result
rename ~force ~make_path ~src dst
renames src
to dst
.
- If
force
istrue
anddst
exists it tries to delete it usingFile.delete
dst
. Ifforce
isfalse
anddst
exists the function errors. - If
make_path
istrue
and the parent directory ofdst
does not exist the whole path to the parent is created as needed with permission0o755
(readable and traversable by everyone, writable by the user).
Resolving
val realpath : Fpath.t -> (Fpath.t, string) Stdlib.result
realpath p
expands all symbolic links and resolves all references to .
and ..
segments. The function errors if p
does not exist.
Copying
val copy : ?rel:bool -> ?atomic:bool -> ?follow_symlinks:bool -> ?prune:(Unix.stats -> string -> Fpath.t -> bool) -> make_path:bool -> recurse:bool -> src:Fpath.t -> Fpath.t -> (unit, string) Stdlib.result
copy ~make_path ~recurse ~src dst
copies the file or file hierarchy rooted at src
to dst
. The function errors if dst
exists. The semantics and arguments correspond to those of Os.Dir:copy
, except this function also works if src
is not a directory. Note that prune
is never called on src
itself FIXME is that a good idea ? also FIXME this should error if src
is a directory and recurse
is false.
See also Os.Dir:copy
and Os.File.copy
.
File mode and stat
val get_mode : Fpath.t -> (int, string) Stdlib.result
get_mode p
is the file mode of p
. Symbolic links are followed.
val set_mode : Fpath.t -> int -> (unit, string) Stdlib.result
set_mode file p
sets the file mode of file
to p
. Symbolic links are followed.
val stat : Fpath.t -> (Unix.stats, string) Stdlib.result
stat p
is p
's file information. Symbolic links are followed.
Symbolic links
val symlink : force:bool -> make_path:bool -> src:Fpath.t -> Fpath.t -> (unit, string) Stdlib.result
symlink ~force ~src p
symbolically links src
to p
.
- If
force
istrue
andp
exists it tries to delete it usingFile.delete
p
. Ifforce
isfalse
andp
exists the function errors. - If
make_path
istrue
and the parent directory offile
does not exist the whole path to the parent is created as needed with permission0o755
(readable and traversable by everyone, writable by the user).
val symlink_link : Fpath.t -> (Fpath.t, string) Stdlib.result
symlink_link p
is Ok l
if p
is a symbolic link to l
.
val symlink_stat : Fpath.t -> (Unix.stats, string) Stdlib.result
Temporary paths
type tmp_name = (string -> string, unit, string) Stdlib.format
The type for temporary file name patterns. The string format is replaced by random hexadecimal US-ASCII characters.
val tmp : ?make_path:bool -> ?dir:Fpath.t -> ?name:tmp_name -> unit -> (Fpath.t, string) Stdlib.result
tmp ~make_path ~dir name ()
is a file system path in dir
that did not exist when the name was found. It may exist once the function returns though, prefer temporary files and directories creation functions to guarantee the creation of the temporary objects.
name
is used to construct the filename of the file, seetmp_name
for details. It defaults to"tmp-%s"
.dir
is the directory in which the temporary file is created. It defaults toOs.Dir.default_tmp
()
.- If
make_path
istrue
(default) anddir
does not exist the whole path to it is created as needed with permission0o755
(readable and traversable by everyone, writable by the user).