File access is provided by an EPOC server, the file server. It provides local file systems (ROM, RAM and removable media), and an interface to allow dynamically installable file systems, such as those required to communicate with remote disks over a network.
The drive, directory and file hierarchy is VFAT, thus making the file system naturally compatible with desktop PCs.
Stream stores, as defined in the Stores API, provides a layer over the file interface, and are commonly used instead of the file API directly.
The application architecture, as defined in the Application Architecture Framework API, and associated components, provide the policy for file locations. Because of this, most application programs do not need to know the details of the directory-related APIs.
Some additional utilities are provided in the Application Utilities API.
The API has seven key concepts: file server session; file; directory; units, drives and volumes; path and filename parser; file management; and file search.
All access from client to server is through a file server session. It provides file system manipulation functions, including adding, removing, moving and renaming files and directories; inspecting and changing file and directory attributes and entry details; and requesting notifications of when significant change occurs.
The file server session is provided by
RFs
.
A specified file can be opened, created, or replaced. Files must be opened before they are read from or written to. Data in read and write operations is passed through descriptors. Files can also be read and written through the file stream classes provided by the File Stores API.
The file interface is provided by
RFile
.
A directory entry is a directory, file or volume label. Directory entries can be read and sorted.
To read through a directory one entry at a time, use
RDir
. To read many entries at a time, use
RFs
functions and the associated
CDir
. The directory entry class is
TEntry
.
A unit is a device which may or may not have a drive in it. For removable media, the unit is always present, but a drive may not be. A drive can have up to four partitions, representing volumes, on it.
RFs
provides means to find out which units,
drives and volumes are present. Information for them is encapsulated in
TDriveUnit
, TDriveInfo
and
TVolumeInfo
.
A filename has the logical parts of drive, path, name, and
extension. An interface to manipulate filenames is provided by
TParseBase
. Concrete implementations are provided by the
derived classes, TParse
, TParsePtr
and TParsePtrC
.
Efficient large-scale copying, moving and other file management
operations, are provided by CFileMan
.
High-level file finding functionality is provided by
TFindFile
.