ini配置文件

来源:互联网 发布:公孙乌龙 知乎 编辑:程序博客网 时间:2024/05/25 20:00

首先,ini文件就是一文本文件,可当成普通文本文件来操作。

 

其次,每个Symbian程序都可以有自己的ini配置文件,里面有程序的初始化信息。对于ini配置文件,Symbian提供了自己的一套方式来处理。

a. 程序要支持ini文件,那就要重载CEikApplication的成员函数,否则程序执行起来会报错,而重载时只要如下语句即可:
CDictionaryStore* CMyApplication::OpenIniFileLC(RFs& aFs) const

    return CEikApplication::OpenIniFileLC(aFs);
 }

这样的话,程序可以在启动时自动的创建一个ini——如果检测到没有的情况下。而这个ini一般是创建在C:/System/App/MyApp目录下的。


b. 一般配置文件要供全局使用,可能要跨越多个view,因此我们把它的操作及数据定义在UI级别,在MyAppUi的ConstructL()函数中有如下语句:

//处理基本的数据
delete iMyConfig;
     iMyConfig = CMyConfigData::NewL();

CDictionaryStore* store = Application()->OpenIniFileLC(iCoeEnv->FsSession());
if (store->IsPresentL(KUidKey)) 

LoadIniFile(store);
} 
else 
{ 
iMyConfig->SetDefault();
SaveIniFile(store);

CleanupStack::PopAndDestroy();
//--结束处理

void CMyAppUi::SaveIniFile(CDictionaryStore* aStore)

RDictionaryWriteStream out;
out.AssignLC(*aStore, KUidKey);
out << *iMyConfig;
out.CommitL();
CleanupStack::PopAndDestroy();
aStore->CommitL();



void CAknExSettingListAppUi::LoadIniFile(CDictionaryStore* aStore)

RDictionaryReadStream in;
in.OpenLC(*aStore, KUidKey);
in >> *iMyConfig;
CleanupStack::PopAndDestroy();


当然具体的CMyConfigData里还要有一些相应的导入导出处理,这样才完美:)

有时候我们还需要在程序中处理一下配置的保存,那我们可以使用如下代码(在view中):
CDictionaryStore *IniFile = AppUi()->Application()->OpenIniFileLC(CCoeEnv::Static()->FsSession());

RDictionaryWriteStream WriteStream;
WriteStream.AssignLC( *IniFile, KUidKey );
WriteStream << *iData;
WriteStream.CommitL();
CleanupStack::PopAndDestroy();

IniFile->CommitL();
CleanupStack::PopAndDestroy();
把它放在一个函数中即可:)

最后要说明的是,如果不在pkg里有明确说明,那保存在系统盘上的ini在程序被删除后是不会丢失的,这就造成了垃圾文件,我们只需要在pkg中加入下面一句就可以彻底删除这些:
; Remove INI file when uninstalling the app.
""-"C:/system/apps/MyApp/MyApp.ini",FN
FN表明这个文件在程序运行时才生成,现在为空。前面用的是“”。 

原创粉丝点击