Existence
val exists : Fpath.t -> (bool, string) Stdlib.resultexists 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.resultmust_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.resultdelete ~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, ifpexisted and was deleted.Ok false, if the pathpdid not exist on the file system.Error _in case of error, in particular ifpis a non-empty directory andrecurseisfalse.
See also File.delete.
val rename : force:bool -> make_path:bool -> src:Fpath.t -> Fpath.t -> (unit, string) Stdlib.resultrename ~force ~make_path ~src dst renames src to dst.
- If
forceistrueanddstexists it tries to delete it usingFile.deletedst. Ifforceisfalseanddstexists the function errors. - If
make_pathistrueand the parent directory ofdstdoes 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.resultrealpath 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.resultcopy ~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.resultget_mode p is the file mode of p. Symbolic links are followed.
val set_mode : Fpath.t -> int -> (unit, string) Stdlib.resultset_mode file p sets the file mode of file to p. Symbolic links are followed.
val stat : Fpath.t -> (Unix.stats, string) Stdlib.resultstat 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.resultsymlink ~force ~src p symbolically links src to p.
- If
forceistrueandpexists it tries to delete it usingFile.deletep. Ifforceisfalseandpexists the function errors. - If
make_pathistrueand the parent directory offiledoes 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.resultsymlink_link p is Ok l if p is a symbolic link to l.
val symlink_stat : Fpath.t -> (Unix.stats, string) Stdlib.resultTemporary paths
type tmp_name = (string -> string, unit, string) Stdlib.formatThe 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.resulttmp ~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.
nameis used to construct the filename of the file, seetmp_namefor details. It defaults to"tmp-%s".diris the directory in which the temporary file is created. It defaults toOs.Dir.default_tmp().- If
make_pathistrue(default) anddirdoes not exist the whole path to it is created as needed with permission0o755(readable and traversable by everyone, writable by the user).