ez_file

Easy file manipulation (read_file, write_file, etc.)
IN THIS PACKAGE
Module type FileSig . FILE_OPERATIONS
include FILENAME_OPERATIONS
type t
val concat : t -> t -> t
val is_absolute : t -> bool
val is_relative : t -> bool
val is_implicit : t -> bool
val add_suffix : t -> string -> t
val check_suffix : t -> string -> bool
val extensions : t -> string list
val basename : t -> string
val dirname : t -> t
val add_basename : t -> string -> t
val add_basenames : t -> string list -> t
val chop_extension : t -> t
val last_extension : t -> string option
val current_dir_name : t
val open_in : t -> in_channel
val open_out : t -> out_channel
val open_in_bin : t -> in_channel
val open_out_bin : t -> out_channel
val temp_file : t -> string -> t
val with_in : t -> ( in_channel -> unit ) -> unit
val with_in_bin : t -> ( in_channel -> unit ) -> unit
val with_out : t -> ( out_channel -> unit ) -> unit
val with_out_bin : t -> ( out_channel -> unit ) -> unit
val exists : t -> bool
val getcwd : unit -> t
val size : t -> int
val is_directory : t -> bool
val remove : t -> unit
val rename : t -> t -> unit
val stat : t -> MinUnix.stats
val lstat : t -> MinUnix.stats
module OP : sig ... end
val copy_rec : t -> t -> unit
val uncopy_rec : t -> t -> unit
val find_in_path : string list -> string -> t

find_in_path path filename searches a file in a list of directories.

include 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.

val copy_file : t -> t -> unit

copy_file src dst copy all the content remaining in file src to file dst.

include 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 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, 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 -> t -> unit ) -> unit -> t 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:t FileSelector.t -> t -> t 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:t FileSelector.t -> t -> t list

Same as read_dir, but returns a list instead of an array

val iter_dir : ?select:t FileSelector.t -> ( basename:string -> localpath:string -> file:t -> unit ) -> t -> 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:t FileSelector.t -> t -> unit -> (string * t) 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 : 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.