html读写配置⽂件,技术分享-编程实现对ini配置⽂件的读写背景
在安装⼀些应⽤程序的时候,我们经常可以其安装⽬录下看到有 .ini 格式的配置⽂件,这种格式配置⽂件是我们⽐较常见的。在我们⾃⼰电脑的系统上也会有,⽽且还很多。很多系统⾃带的程序,都会有⼀个 .ini 格式的配置⽂件。
为此,Windows还特地提供了相应的WIN32 API函数去对 .ini 格式的配置⽂件进⾏读写操作。所以,本⽂就主要介绍下如何使⽤API函数来实现对 .ini 配置⽂件的读写。现在,我就把实现过程整理成⽂档,分享给⼤家。
函数介绍
WritePrivateProfileString 函数将⼀个字符串复制到INI⽂件的指定字段中。
赣语
白鸽是谁函数声明
BOOL WINAPIWritePrivateProfileString(
_In_LPCTSTR lpAppName,
_In_LPCTSTR lpKeyName,
_In_LPCTSTR lpString,
_In_LPCTSTR lpFileName
);
参数
lpAppName [in]
要复制字符串的字段名称。 如果该字段不存在,则创建它。
lpKeyName [in]
与字符串关联的键的名称。 如果该键在指定的字段下不存在,则创建它。 如果此参数为NULL,则整个字段(包括该字段中的所有的键)将被删除。
lpString [in]
要写⼊⽂件的以NULL结尾的字符串。 如果此参数为NULL,则lpKeyName参数指向的键将被删除。
lpFileName [in]
INI⽂件的名称。如果⽂件是使⽤Unicode字符创建的,则该函数将Unicode字符写⼊该⽂件。 否则,函数写⼊ANSI字符。
返回值
如果函数成功将字符串复制到初始化⽂件,则返回值不为零。
如果函数失败,或者刷新最近访问的初始化⽂件的缓存版本,返回值为零。 要获取扩展错误信息,请调⽤GetLastError。
GetPrivateProfileString 函数从INI⽂件中的指定的字段中获取⼀个字符串。
函数声明演员刘欢个人资料
吴亚馨被删掉的照片DWORD WINAPIGetPrivateProfileString(
_In_LPCTSTR lpAppName,
_In_LPCTSTR lpKeyName,
_In_LPCTSTR lpDefault,
_Out_LPTSTR lpReturnedString,
_In_DWORD nSize,
_In_LPCTSTR lpFileName
);
参数
lpAppName [in]
字段的名称。如果此参数为NULL,则GetPrivateProfileString函数将⽂件中的所有字段名复制到提供的缓冲区⾥。
lpKeyName [in]
要检索的键名。如果此参数为NULL,则由lpAppName参数指定的字段中的所有键名将复制到由lpReturnedString参数指定的缓冲区中。
读取配置文件失败lpDefault [in]
默认字符串。如果在INI⽂件中不到lpKeyName键,则GetPrivateProfileString将默认字符串复制到lpReturnedString缓冲区。如果此参数为NULL,则默认值为空字符串“”。避免指定⼀个带有空⽩字符的默认字符串。该函数在lpReturnedString缓冲区中插⼊⼀个空字符以去除任何尾随的空⽩。
写友情的诗lpReturnedString [out]
指向接收检索字符串的缓冲区的指针。
nSize [in]
lpReturnedString参数指向的缓冲区的⼤⼩,以字符为单位。
lpFileName [in]
INI⽂件的名称。如果此参数不包含⽂件的完整路径,系统将在Windows⽬录中搜索该⽂件。
返回值
返回复制到缓冲区的字符数,不包括终⽌空字符。
GetPrivateProfileInt 函数在INI⽂件中的指定的字段中获取它的整数值。
函数声明
UINT WINAPIGetPrivateProfileInt(
_In_LPCTSTR lpAppName,
_In_LPCTSTR lpKeyName,
_In_INT nDefault,
_In_LPCTSTR lpFileName
);
参数
lpAppName [in]
INI⽂件中的字段名称。
lpKeyName [in]
要检索其值的键名。此值为字符串的形式,GetPrivateProfileInt函数将字符串转换为整数并返回整数。
nDefault [in]
如果在初始化⽂件中不到键名,返回的默认值。
lpFileName [in]
INI⽂件的名称。 如果此参数不包含⽂件的完整路径,系统将在Windows⽬录中搜索该⽂件。
返回值
返回INI⽂件中指定键名后的字符串转换后的整数。
如果不到键,则返回值是指定的默认值。
实现过程
根据上⾯的函数介绍,我们直接调⽤上述函数对INI配置⽂件进⾏操作。本⽂的例⼦如下:
⾸先,我们调⽤ WritePrivateProfileString 函数创建⼀个名为Config.ini的INI⽂件,并添加INFORMATI
ON和OTHER字段;在INFORMATION字段下,有两个键名分别为name和age的键,其中键名为name中存储的键值是DemonGan,键名为age中存储的键值为18。在OTHER字段中,键名为class的键值为no1。
charszFileName[]="C:\\Users\\DemonGan\\Desktop\\ReadWriteIniFile_Test\\Debug\\Config.ini";
// 向INI⽂件中写⼊数据
::WritePrivateProfileString("INFORMATION","name","DemonGan",szFileName);
::WritePrivateProfileString("INFORMATION","age","18",szFileName);
::WritePrivateProfileString("OTHER","class","no1",szFileName);
那么,⽣成的INI⽂件的数据内容如下所⽰:
然后,我们调⽤ GetPrivateProfileString 函数,读取INI⽂件中的INFORMATION字段下的name键的数据。
// 从INI⽂件中读取字符串数据
charszReturnString[MAX_PATH]={0};
::GetPrivateProfileString("INFORMATION","name",NULL,szReturnString,MAX_PATH,szFileName);
printf("name=%s\n",szReturnString);
接着,我们调⽤ GetPrivateProfileInt 函数,读取INI⽂件中的INFORMATION字段下的age键的数据。
// 从INI⽂件中读取整型数据
intiReturnInt=::GetPrivateProfileInt("INFORMATION","age",0,szFileName);
printf("age=%d\n",iReturnInt);
对于类似age=18的整型数据的读取,我们除了可以使⽤ GetPrivateProfileInt 函数读取之外,还可以使⽤ GetPrivateProfileString 函数去读取,只要将获取的字符串转换为整型就可以了。其中,GetPrivate
ProfileInt 函数也是先调⽤获取字符串,然后再转换为整型,所
以,GetPrivateProfileInt 函数是对 GetPrivateProfileString 函数的封装和拓展。
程序测试
1我们直接运⾏程序,则成功从INI⽂件中获取数据并显⽰出来,同时⽬录下有 Config.ini ⽂件⽣成,打开⽂件可以查看⾥⾯的数据内容。
总结
要注意的是,上⾯ 3 个函数的INI⽂件路径最好都写上绝对路径,否则系统会⾃动在Windows⽬录中搜索,这样,会导致⽂件数据读取失败。