sig
  type 'a or_error = [ `Error of string | `Ok of 'a ]
  type t = string
  val to_string : CCIO.File.t -> string
  val make : string -> CCIO.File.t
  val exists : CCIO.File.t -> bool
  val is_directory : CCIO.File.t -> bool
  val remove_exn : CCIO.File.t -> unit
  val remove : CCIO.File.t -> unit CCIO.File.or_error
  val remove_noerr : CCIO.File.t -> unit
  val read_dir : ?recurse:bool -> CCIO.File.t -> CCIO.File.t CCIO.gen
  val read_exn : CCIO.File.t -> string
  val read : CCIO.File.t -> string CCIO.File.or_error
  val append_exn : CCIO.File.t -> string -> unit
  val append : CCIO.File.t -> string -> unit CCIO.File.or_error
  val write_exn : CCIO.File.t -> string -> unit
  val write : CCIO.File.t -> string -> unit CCIO.File.or_error
  type walk_item = [ `Dir | `File ] * CCIO.File.t
  val walk : CCIO.File.t -> CCIO.File.walk_item CCIO.gen
  val show_walk_item : CCIO.File.walk_item -> string
  val with_temp :
    ?temp_dir:string ->
    prefix:string -> suffix:string -> (string -> 'a) -> 'a
end