Symbian文档类读写文件和读写Ini文件

来源:互联网 发布:sql数据库恢复工具 编辑:程序博客网 时间:2024/05/16 11:10

一、文档类读写文件

    SymbianGUI应用程序中,如果需要永久保存应用程序数据,框架可以自动启动该进程来保存数据。

文档类包含两个可以重写的重要函数:StroeL()RestoreL()。在应用程序启动时,框架自动调用RestoreL()。然后,该函数负责加载应用程序数据。当应用程序退出时,为了保存应用程序数据,框架调用StoreL()函数需要包括对SaveL()的调用,用于指示框架进行调用。

Series 60与其它的Symbian OS平台区别是:文档类的默认行为不是使用文件存储永久保存数据。因此,Series 60并不会在应用程序启动时自动打开用于文档保存的文件。CAknDocument::OpenFile()的实现为空。

不过,通过重写文档类中的OpenFile()函数,并调用基类实现,可以完成这种行为:

CFileStore*CDocumentExampleDocument::OpenFileL(TBool aDoOpen,const TDesC& aFilename,RFs& aFs)

   {

   return CEikDocument::OpenFileL(aDoOpen, aFilename, aFs);

   }

在完成StroeL()RestoreL()后,可以调用CAknDocument::SaveL()来实现数据的写入。

CDocumentExampleDocument* aDocument =

static_cast< CDocumentExampleDocument* > (AppUi()->Document() );

aDocument->SaveL();

本部分参照《Series 60应用程序框架》一书。

二、ini文件读写

Series 60中并沒有默认提供对Symbian OS .ini文件的支持。为了允许应用程序使用.INI文件,必须重写应用程序类的OpenIniFileLC()函数,使其调用EikApplication:: OpenIniFileLC()。例如:

CDictionaryStore* CDocumentExampleApplication::OpenIniFileLC(RFs& aFs) const

{

    return CEikApplication::OpenIniFileLC(aFs);

}

此时,运行应用程序,即会发现有ini文件产生。

CDocumentExampleAppUi里写两个函数WriteIniFileReadIniFile,通过这两个函数可以读写ini文件。

void CDocumentExampleAppUi::WriteIniFile(TUid iInfo, TDes& aWrite)
    {
       RFs fs;

    fs.Connect();

    CleanupClosePushL(fs);

    RDictionaryWriteStream rdsIniFile;

    CDictionaryStore *cdIniFile = Application()->OpenIniFileLC(fs);//如果不存在就创建

    rdsIniFile.AssignLC(*cdIniFile, iInfo);

//  TPtr8 buf((TUint8*)ptr, size, size);

//  TRAP(r, rdsIniFile.WriteL(buf));

    rdsIniFile << aWrite;

    rdsIniFile.CommitL();

    CleanupStack::PopAndDestroy();

    cdIniFile->CommitL();

    CleanupStack::PopAndDestroy(2);   

 }


    TBool CDocumentExampleAppUi::ReadIniFile(TUid iInfo, TDes& aRead)
    {
       TBool result = EFalse;

    RFs fs;

    fs.Connect();

    CleanupClosePushL(fs);

    RDictionaryReadStream rdsIniFile;

    CDictionaryStore *cdIniFile = Application()->OpenIniFileLC(fs);

    if (cdIniFile->IsPresentL(iInfo))

       {

       rdsIniFile.OpenLC(*cdIniFile, iInfo);

      

//     TPtr8 buf((TUint8*)ptr, size, size);

//     TRAP(r, rdsIniFile.ReadL(buf));

       rdsIniFile >> aRead;

       CleanupStack::PopAndDestroy(); // rdsIniFile

       result = ETrue;

       }

    CleanupStack::PopAndDestroy( 2); // fs, cdIniFile

    return result;   

 }

本部分参考了《Symbian中操作ini文件》一文。

总结,本文介绍了如何利用文档类读写数据文件以及如何读写ini文件,这两个文件的保存的地址为:C:/S60/devices/S60_3rd_FP2_SDK_v1.1/epoc32/winscw/c/private/eeddfaa4,其中eeddfaa4为应用程序的UIDC:/S60/devices/S60_3rd_FP2_SDK_v1.1为模拟器安装地址。源码下载地址:http://download.csdn.net/source/858371

 

原创粉丝点击