A common pattern is to attempt to open an existing file, without replacing its existing data, and create it if it does not exist.
Use Open()
to open an existing file for reading or
writing—an error is returned if it does not already exist.
Use Create()
to create and open a new file for
writing.
TInt err=file.Open(fsSession,fileName,shareMode);
if (err==KErrNotFound) // file does not exist - create it
err=file.Create(fsSession,fileName,shareMode);
Use various flags to specify how a file is opened.
// Open a file as text, writable, and shared with other clients
RFile file;
_LIT(KFileName, "FILENAME.CPP");
file.Open(fsSession,KFileName,EFileStreamText|EFileWrite|EFileShareAny);
If another RFile
object tries to open this file in
EFileShareExclusive
or EFileShareReadersOnly
mode,
access is denied. It can only be accessed in EFileShareAny
mode.
If a file is not closed explicitly (using
RFile::Close()
), it will be closed when the server session
associated with it is closed.