Symbian 文件读写及读写流的方法
2010-03-18 20:53:00 来源:WEB开发网1. FileServer之文件操作:
a. 遍历指定文件目录
RFs& rs = CCoeEnv::Static()->FsSession(); // 建立一个文件服务器回话
CDir* dirEntryList = NULL; // 用来保存获取到的目录下的条目
_LIT(KPath, “C:\Nokia\”); // 文件夹目录的路径
// 使用文件服务器回话来遍历文件夹目录
User::LeaveIfError(fs.GetDir(/*const TDesC& */ KPath, // 要遍历的文件目录路径
/* TUint */ KEntryAttNormal, // 要获取的文件属性(非系统和隐藏文件)
/* TUint */ ESortByName, // 按名字排序
/* CDir*& */ dirEntryList // 返回的文件和目录条目指针
)
);
// 遍历文件目录条目
For(Tint i =0; i < dirEntryList->Count(); i++)
{
const TEntry& anEntry = (*dirEntryList)[i];
TBuf
TUint attribute = anEntry.iAtt;
TInt size = anEntry.iSize;
}
// 删除文件以及目录条目列表
delete dirEntryList;
dirEntryList = NULL;
b. 读写文件
在读写之前必须先建立一个文件服务器对话(RFs),RFile提供的读写文件功能只针对二进制数据或者ascii文本(读写针对的文件类型是位描述符byte descriptor,即TDes8, TDesC8),调用RFile::Close()时,会自动将cached data刷新到文件当中,但是如果出错,它并不返回任何错误值,所以最好在调用Close()之前,先调用Flush()
RFile::Create()
RFile::Open()
RFile::Replace()
RFile::Flush()
RFile::Close()
使用流来进行读写操作
对于想要实现流操作的类,必须实现以下两个操作:
ExternalizeL(): 将其状态输出到流中以bit的形式保存
InternalizeL(): 将流中的bit读到对象中来
RWriteStream提供将一下的变量类型序列化到文件中:
TInt, TUint, TReal, TReal64, descriptor, 读入流(RReadStream)
调用RWriteStream::CommitL()提交写入操作。
class CMyObject : public CBase
更多精彩
赞助商链接