WEB开发网
开发学院手机开发Symbian 开发 Symbian程序开发中文件操作小结 阅读

Symbian程序开发中文件操作小结

 2010-08-20 01:51:00 来源:WEB开发网   
核心提示:TFileText ft; // you can also alloc ft with new operatorft.Set(…);TBuf<256> line; // you may want to use HBufC or RBuf…while(KErrEof != ft.Read(line)){//

TFileText ft; // you can also alloc ft with new operator

ft.Set(…);

TBuf<256> line; // you may want to use HBufC or RBuf…

while(KErrEof != ft.Read(line))

{

// your operation to line

}

ft.Write(…); // auto insert your TDesC into the new line

CLineReader

Location: VERSIT.H

Link against: versit.lib

类如其名,这个类只支持单行读,不支持写。不过用起来也不算太麻烦,因为是通过流读取的,所以没有单行256个字符的限制。

据我测试,文件编码必须是UTF-8 without BOM(就是文件头不带EFBBBF三个字节,这三个字节对于UTF-8编码来说不是必需的,但是Windows平台下的UTF-8编码文件都有这三个字节),UTF-16的貌似不支持,下次作一个详尽的测试。

示例代码:

RFs fs;

User::LeaveIfError(fs.Connect());

RFileReadStream fileReadStream;

fileReadStream.Open(fs,KConfigFilePath,EFileStreamText);

CLineReader* lineReader = CLineReader::NewL(fileReadStream);

TInt err(KErrNone);

while(true)

{

lineReader->ReadLineL(0,err);

if(KErrEof == err)

{

break;

}

// do sth with lineReader->iBufPtr

}

delete lineReader;

fileReadStream.Close();

fs.Close();

很方便吧。

RFile

Location: f32file.h

Link against: efsrv.lib

创建或者打开一个文件,可以对文件进行所有的操作,读啊写啊,改名改属性等等。

从Read()、Write()的所有重载版本看,参数都是TDesC8/TDes8 的,看来应该是对UTF-8 without BOM编码的文件适用。另外Read()、Write()都提供了同步、异步两种方式,可以按需要选用。

RFileReadStream/RFileWriteStream

Location: S32FILE.H

Link against: estor.lib

从RReadStream/RWriteStream派生出来的文件流。

示例代码:

RFileWriteStream writer;

writer.PushL(); //推上清洁栈

User::LeaveIfError(writer.Replace(fileSession, KFileName, EFileWrite)); //将流与文件绑定

writer << aTxt; //将aTxt的内容写入流

writer.CommitL(); //提交,相当于Flush

writer.Pop();

writer.Close();

上一页  1 2 3 

Tags:Symbian 程序开发 文件

编辑录入:coldstar [复制链接] [打 印]
赞助商链接