现在的位置: 首页 > 综合 > 正文

文件服务器之一:文件处理

2018年03月19日 ⁄ 综合 ⁄ 共 1315字 ⁄ 字号 评论关闭

 

*文件服务器
 - 通过客户端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()
 

抱歉!评论已关闭.