要从文件中读入文本,有两个问题需要解决:
1、怎么打开文件并读该文件。
2、怎么将读入的文本放置到类似TBuf这样的东西中。
下面看一个程序片段:
RFs fs;
User::LeaveIfError(fs.Connect());
RFile file;
User::LeaveIfError(file.Open(fs, _L("e://1.txt"), EFileRead));
TInt sz;
file.Size( sz);
TBuf16<20> sz_str;
sz_str.Format( _L( "%d" ) , sz);
TBuf8< 2> buf;
for( int i = 0; i < sz / 2; i ++)
{
TBuf16< 1> c;
file.Read( buf, 2);
c.Copy( ( unsigned short int *)buf.Ptr(), 1);
iCNTextShowContainer->AddText( c);
}
file.Close();
fs.Close();
读文件很简单,见上面的程序应该可以看懂。
RFile只提供了一个读入8位字节类型的read方法,而unicode是16位的,这就牵扯到了一个将两个8位字节转换成一个unicode码的问题,上面程序中Copy( ( unsigned short int *)buf.Ptr(), 1);就完成这个工作。具体过程就是:得到文件大小字节数,包含的文字数量为大小的二分之一,然后循环读入字节,一次读入两个字节,通过Copy方法把这两个字节转换成一个unicode码,放入到TBuf16中。