开发安卓时,我们有时候需要保存应用程序的配置信息,以方便下次打开APP时不需要重新配置。阿秀我之前总结了一篇使用Memo控件保存数据的方法,可惜只能针对Memo,不能保存其他控件比如Edit的配置信息。下面内容我总结了另一种保存数据的方法——ini文件。
INI文件一种通用的配置文件格式,它像注册表一样分键和数据项。下面是后面例程INI配置文件的内容,它有一个键Config,在这个键下有一个数据项Data,在数据项后面就是这个数据项的值123。
[Config]
Data=123
TIniFile类有几个常用的方法:
1、TIniFile
__fastcall TIniFile(const AnsiString FileName)::Inifiles::TCustomIniFile(FileName) {}
这个方法创建一个INI对象,如果FileName指定的文件名不存在则自动生成此文件,FileName可以用全路径,指定INI文件的地点。
2、SectionExists
bool __fastcall SectionExists(const AnsiString Section);
这个方法判断是否存在Section这个键。
3、ReadString
virtual AnsiString __fastcall ReadString(const AnsiString Section, const AnsiString Ident, const AnsiString Default);
这个方法从INI文件中读取一个字符串,Section是指定的键,Ident是指定键下的数据项,Default是如果这个项不存在的时候的默认值。
4、WriteString
virtual void __fastcall WriteString(const AnsiString Section, const AnsiString Ident, const AnsiString Value);
这个方法是向INI文件中写入一个字符串,Senction是指定的键,Ident是指定的数据项,Value是要写入的数据。
当然,TIniFile类也可以读取整型、布尔型,二进制等数据类型,摸索一下就知道了,用法也一样。
例程(已通过编译并下载到手机上验证)
//--------------------------------------------------------------------------- #include <fmx.h> #pragma hdrstop #include "Unit2.h" #include <System.IOUtils.hpp> //文件路径信息,想保存到SD卡或使用TPath类必须包含该头文件 #include <System.inifiles.hpp> //ini文件的头文件 //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.fmx" TForm2 *Form2; //--------------------------------------------------------------------------- __fastcall TForm2::TForm2(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- //保存按钮 void __fastcall TForm2::Button1Click(TObject *Sender) { TIniFile * regKey= new TIniFile (System::Ioutils::TPath::GetTempPath() + "/Config.ini"); //创建一个INI对象,如果指定的文件名不存在则自动生成此文件 regKey->WriteString ( "Config", "Data" , Memo1->Text ); //向INI文件中写入一个字符串 ShowMessage(L"已经保存到" + System::Ioutils::TPath::GetTempPath() + "/Config.ini" + L"文件下"); delete regKey; } //--------------------------------------------------------------------------- //读取按钮 void __fastcall TForm2::Button2Click(TObject *Sender) { TIniFile * regKey= new TIniFile (System::Ioutils::TPath::GetTempPath() + "/Config.ini"); Memo1->Text = regKey->ReadString ( "Config", "Data" , "123" );//从INI文件中读取一个字符串。 ShowMessage(L"从" + System::Ioutils::TPath::GetTempPath() + "/Config.ini" + L"文件读取数据"); delete regKey; } //---------------------------------------------------------------------------
总结
使用INI文件保存配置信息是很方便的,它最大的优点就是用户可以手工去就改它,它通常用来保存一些不是至关重要的数据。它的缺点就是不适合保存结构比较复杂的数据,而且文件容易被破坏。