INI文件(Initialization file ,又称为初始化文件)是用来保存应用程序设置和选项的一种特殊的ASCII文件,以“.ini”作为文件扩展名,也被称做配置文件或概要文件(Profile)。除了各个应用程序可以拥有自己私有的初始化文件外,Windows系统还提供有一个系统的初始化文件Win.ini,并由此对当前的Windows系统进行配置,同时也可以在其内记录系统内其他应用程序在运行时的选项。
通常为应用程序所私有的初始化文件比较小,这样可以减少程序在初始化时所读取的信息量,从而提高程序的启动速度。而系统初始化文件Win.ini由于除了记录有关系统的大量信息外,还存储着许多其他应用软件的初始化数据,因此其通常比较庞大,访问的数据量要远比私有的配置文件大得多。如没有必要,一般不建议对Win.ini文件进行操作,但如果待存取的信息涉及到Windows系统环境或是其他应用程序时, 就必须对Win.ini进行读写访问,并在访问的同时发送WM_WININICHANGE消息给所有的顶层窗口,通知其他进程系统初始化文件已被更改。
配置文件里的信息之所以能为系统和众多不同类型的应用程序读取并识别,是由于其内部对数据的存取采用了预先约定的“项-值对(key value pairs)”存储结构, 并对待存取的数据分门别类地进行存储。下面是系统目录下Win.ini文件的部分内容:
[windows]
load=1
run= 2
NullPort=None
[Desktop]
WallpaperStyle=2
Pattern=3
在此,配置文件将信息分为若干“节”,节标题放在方括号中,如“[Desktop]”就是Desktop节,在每一个节中包含了一些与之相关的“项”,并通过等号对其进行赋值。一般形式如下:
[SECTION]
ENTRY=VALUE
在初始化文件中,VALUE值只能有两种数据类型:数值和字符串。Windows分别为这两种数据类型提供了两套API函数对初始化文件进行数据读取,在写入初始化文件时则只支持对字符串的写入,数值等类型必须先进行数据类型的转换,然后才能写入到初始化文件。
2.VC操作ini文件
一提到文件作出,我们肯定马上能想到的就是打开文件,关闭文件,读取文件,写入文件,等基本的形式,也许还有其他的比如读一行还是读一个字节什么的。ini文件也不例外,但是VC肯定是对基本的文件操作进行了封装,使得我们操作起来比较方便。
下面介绍这几个函数:
BOOL WritePrivateProfileString( LPCTSTR lpAppName, // section name LPCTSTR lpKeyName, // key name LPCTSTR lpString, // string to add LPCTSTR lpFileName // initialization file );这个函数的主要功能就是向配置文件里面追加内容,从上面的介绍中,不难知道lpAppName就是上文所述的节,也就是[]里面的内容,lpKeyName也就是我们配置文件里面的项,比如上面介绍的WallpaperStytle和Pattern等。那么lpString肯定就是要写在配置文件里面的值了。那么最后一个文件肯定就是向哪个文件中追加内容了。
DWORD GetPrivateProfileString( LPCTSTR lpAppName, // section name LPCTSTR lpKeyName, // key name LPCTSTR lpDefault, // default string LPTSTR lpReturnedString, // destination buffer DWORD nSize, // size of destination buffer LPCTSTR lpFileName // initialization file name );
那么这个函数肯经就是读取ini文件中节和项了。其参数也非常好理解。lpAppName当然就是往哪个节下增加条目了。