Module Eio.File

Operations on open files.

Files implement the Flow APIs, which can be used for reading and writing data. This module provides additonal file-specific operations, such as seeking within a file.

To get an open file, use the functions in the Path module.

Types

module Unix_perm : sig ... end

Traditional Unix permissions.

module Stat : sig ... end

Portable file stats.

type ro_ty = [
  1. | `File
  2. | Flow.source_ty
  3. | Resource.close_ty
]
type 'a ro = [> ro_ty ] as 'a Std.r

A file opened for reading.

type rw_ty = [
  1. | ro_ty
  2. | Flow.sink_ty
]
type 'a rw = [> rw_ty ] as 'a Std.r

A file opened for reading and writing.

Metadata

val stat : _ ro -> Stat.t

stat t returns the Stat.t record associated with t.

val size : _ ro -> Optint.Int63.t

size t returns the size of t.

Reading and writing

val pread : _ ro -> file_offset:Optint.Int63.t -> Cstruct.t list -> int

pread t ~file_offset bufs performs a single read of t at file_offset into bufs.

It returns the number of bytes read, which may be less than the space in bufs, even if more bytes are available. Use pread_exact instead if you require the buffer to be filled.

To read at the current offset, use Flow.single_read instead.

val pread_exact : _ ro -> file_offset:Optint.Int63.t -> Cstruct.t list -> unit

pread_exact t ~file_offset bufs reads from t into bufs until bufs is full.

  • raises End_of_file

    if the buffer could not be filled.

val pwrite_single : _ rw -> file_offset:Optint.Int63.t -> Cstruct.t list -> int

pwrite_single t ~file_offset bufs performs a single write operation, writing data from bufs to location file_offset in t.

It returns the number of bytes written, which may be less than the length of bufs. In most cases, you will want to use pwrite_all instead.

val pwrite_all : _ rw -> file_offset:Optint.Int63.t -> Cstruct.t list -> unit

pwrite_all t ~file_offset bufs writes all the data in bufs to location file_offset in t.

val seek : _ ro -> Optint.Int63.t -> [ `Set | `Cur | `End ] -> Optint.Int63.t

Set and/or get the current file position.

Like Unix.lseek.

val sync : _ rw -> unit

Flush file buffers to disk.

Like Unix.fsync.

val truncate : _ rw -> Optint.Int63.t -> unit

Set the length of a file.

Like Unix.ftruncate.

Provider Interface

module Pi : sig ... end