*文件服务器
- 通过客户端API进行访问,该API在f32file.h中定义
(驱动器A——Z:C是系统内置存储位置,Z是ROM只读内存保留的,其他的可以任意分配)
*文件服务器会话
- 所有的文件都是通过会话进行访问
- 应用程序可能有多个会话
- 使用RFs类开启会话
*连接到文件服务器
- 增加资源数
- 必须在完成操作之后关闭资源,比如
RFs fsSession;
User::LeaveIfError(fsSession.Connect());
……
fsSession.Close();
*使用CONE环境提供的实例,比如:
RFs& fs = CCoeEnv::Static()->FsSession();
*RFs功能包括
- 添加、删除、移动和重命名文件和目录
- 获取目录列表
- 保持包含驱动器盘符和路径的默认路径
- 获取驱动器和卷的信息
- 请求重要修改的通知事件
*如下的文件访问示例中,CDir类包含目录列表
RFs& fs = CCoeEnv::Static()->FsSession();
CDir* anEntryList = NULL;
_LIT(KPath,"c://nokia//");
User::LeaveIfError(fs.GetDir(KPath, KEntryAttNormal, ESortByName, anEntryList));
//迭代访问该列表
for (TInt I=0; i<anEntryList->Count(); I++)
{
const TEntry& anEntry = (*anEntryList)[I];
TBuf<KMaxFileName> name = anEntry.iName;
TUInt IAttributes = anEntry.IAtt;
TInt iSize = anEntry.iSize;
}
delete anEntryList;
anEntryList = NULL;
读/写文件
*RFile类
- 提供句柄以打开单个文件
- RFile::Create()打开一个新文件用于写入
- RFile::Open()打开一个已有文件用于访问
- RFile::Replace()删除已有文件并打开一个新文件,或者在该文件不存在的情况下直接创建一个新文件
- RFile::Flush()将缓存的数据写入文件
- RFile::Close()关闭文件
*读写文件方法
- RFile::Read()和RFile::Write()
- 只适用于8位二进制数据或是ASCII文本
- 不能用于其他数据类型
- 流更适用于文件读写操作
使用RFile操作二进制数据
*访问二进制数据
*RFile类表示一个文件
*一旦打开文件,就可以读/写数据
- RFile::Read()
- RFile::Write()
*文件数据作为二进制数据或ASCII文本进行处理
*使用字节描述符
- TDes8,TDesC8,等
*Series60只支持Unicode,所以使得该函数适用性有限
*删除文件和目录
- 文件不能处于打开状态或是只读状态
- 不能删除系统文件
- 目录必须为空
- 不能删除根目录
- 对于文件使用RFs::Delete(), 对于目录使用RFs::RmDir()