ini文件介绍与使用
ini文件的操作
delphi开发 ini文件使用详解:ini文件创建、打开、读取、写入操作。
ini文件常用作配置文件使用(1)INI文件的结构:[节点]关键字=值注:INI文件允许有多个节点,每个节点又允许有多个关键字,“=”后面是该关键字的值(类型有串、整型数值和布尔值。
其中字符串存贮在INI文件中时没有引号,布尔真值用1表示,布尔假值注释以分号“;”开头。
(2)INI文件的操作1、在Interface的Uses节增加IniFiles;2、在Var变量定义部分增加一行:inifile:Tinifile;然后,就可以对变量myinifile进行创建、写入等操作了。
procedureTForm1.FormCreate(Sender:TObject);varfilename:string;beginfilename:=ExtractFilePath(paramstr(0))+‘tmp.ini’;inifile:=TInifile.Create(filename);或filename:=getcurrentdir+ 'tmp.ini ';或inifile:=TInifile.Create(‘d:\tmp.ini’);3、打开INI文件:inifile:=Tinifile.create('tmp.ini'); //文件必须存在4、读取关键字的值:a:=inifile.Readstring('节点','关键字',缺省值);// string类型b:=inifile.Readinteger('节点','关键字',缺省值);// integer类型c:=inifile.Readbool('节点','关键字',缺省值);// boolean类型edit1.text:=inifile.Readstring('程序参数,'用户',‘’);checkbox1.checked:=inifile.Readbool('程序参数,'用户',checkbox1.checked);// boolean类型inifile.Readstring('程序参数,'用户',edit1.text);inifile.Readbool('程序参数,'用户',checkbox1.checked);其中[缺省值]为该INI文件不存在该关键字时返回的缺省值。
关于MYSQL数据库INI文件的详细介绍
(5)、sort_buffer:
每个需要进行排序的
当你观察你的主机进程列表,发现大量 264084 | unauthenticated user | xxx.xxx.xxx.xxx | NULL | Connect | NULL | login | NULL 的待连接进程时,就要加大 back_log 的值了。默认数值是50,我把它改为500。
ห้องสมุดไป่ตู้。
(1)、back_log:
要求 MySL 能有的连接数量。当主要MySL线程在一个很短时间内得到非常多的连接请求,这就起作用,然后主线程花些时间(尽管很短)检查连接并且启动一个新线程。
back_log值指出在MySL暂时停止回答新请求之前的短时间内多少个请求可以被存在堆栈中。只有如果期望在一个短时间内有很多连接,你需要增加它,换句话说,这值对到来的TCP/IP连接的侦听队列的大小。你的操作系统在这个队列大小上有它自己的限制。试图设定back_log高于你的操作系统的限制将是无效的。
(4)、max_connections:
允许的同时客户的数量。增加该值增加 mysld 要求的文件描述符的数量。这个数字应该增加,否则,你将经常看到 Too many connections 错误。 默认数值是100,我把它改为1024 。 (5)、record_buffer: 每个进行一个顺序扫描的线程为其扫描的每张表分配这个大小的一个缓冲区。如果你做很多顺序扫描,你可能想要增加该值。默认数值是131072(128K),我把它改为16773120 (16M)
(2)、interactive_timeout:
服务器在关闭它前在一个交互连接上等待行动的秒数。一个交互的客户被定义为对
mysl_real_connect()使用 CLIENT_INTERACTIVE 选项的客户。 默认数值是28800,我把它改为7200。
ini文件只知道节名,读取节下所有值的方法qt
ini文件只知道节名,读取节下所有值的方法qt1.引言1.1 概述概述INI文件是一种常见的配置文件格式,它被广泛用于存储和管理应用程序的配置信息。
INI文件由一系列的节(section)和键值对(key-value)组成。
每个节包含一组相关的键值对,用来描述特定的配置项。
在读取INI 文件时,通常可以根据节名和键名来获取对应的值。
然而,在某些情况下,我们可能只知道节的名称,而不清楚该节下有哪些键值对。
本文将介绍如何通过Qt框架提供的方法来读取INI文件中某个节下的所有键值对。
首先,我们需要了解Qt框架中关于INI文件的相关类和函数。
Qt提供了一个名为QSettings的类,它是用于读写配置信息的工具类。
QSettings类支持INI文件格式,并提供了方便的方法来读取和写入INI 文件中的配置项。
在使用QSettings类读取INI文件时,我们可以先使用QSettings的构造函数来指定INI文件的路径,然后使用value()函数来获取指定节下的键值对。
为了读取某个节下的所有键值对,我们可以使用childGroups()函数来获取所有的子节名,然后再遍历每个子节获取其对应的键值对。
下面是一个简单的示例代码,展示了如何使用Qt框架中的QSettings 类来读取INI文件中某个节下的所有键值对:cppinclude <QSettings>include <QDebug>void readIniFile(const QString& filePath){QSettings settings(filePath, QSettings::IniFormat);QStringList sectionList = settings.childGroups();foreach (const QString& section, sectionList) {settings.beginGroup(section);QStringList keys = settings.childKeys();foreach (const QString& key, keys) {QString value = settings.value(key).toString();qDebug() << "Section:" << section << "Key:" << key << "Value:" << value;}settings.endGroup();}}int main(){QString filePath = "config.ini";readIniFile(filePath);return 0;}以上代码中,readIniFile()函数用于读取INI文件中某个节下的所有键值对。
ini教程(天晴)
INI入门手册INI是initialization的前三个字母,是初始化设置文件的后缀名。
INI文件的作用是索引和设置游戏客户端的文件资源。
网络游戏为了减轻服务器的压力,加快游戏速度,往往将一部分游戏资源放置在客户端内,再通过程序加载一些INI文件来找到游戏在客户端内所需要的资源,然后使用这些资源并通过一些INI文件的设置来展现一个游戏世界。
INI在游戏中的用途主要是:1、游戏中人物、物品模型与贴图文件的索引2、游戏中效果的表现。
如光效、音效等3、游戏中信息的显示。
如界面信息、系统提示等要熟悉INI首先要弄明白的是各个INI的功能,接下来是各个INI之间、INI与数据库之间的联系,最后才是INI的编写格式。
INI的功能会因为游戏的不同而产生些许变化,但大体上功能还是一样的而INI的编写格式也会因游戏的需要而发生变化,一般来说是在游戏制作前期就由程序跟策划根据游戏的需要制定。
制定INI的编写规则重点是在保证达到你需要功能的基础上尽量简单、易记。
由于INI文件属于公开化,玩家可以随意修改。
所以有部分比较重要的INI就需要用这种工具把INI文件转换成dat格式,这样玩家就不可以随意修改了。
这部分INI是一定需要转换的,因为程序方面对这部分INI只认dat格式,那些INI需要转换在下面会加以说明文件格式说明:C3:我们公司专用的模型文件格式DDS:模型贴图的文件格式,由tga和bmp通过特定工具转换而成,主要是为了节省空间。
下面INI的索引中其实并不一定要用DDS格式,用tga和bmp也可以,只要你文件和索引统一就OK啦。
还有一点值得注意的是当游戏制作到后期,会通过工具把零散的C3文件统一打包在C3.DNP这个文件中,所以有时候游戏没错误,而通过索引找不到指定的文件就是这个原因下面就公司《魔域》这款游戏中的一些比较重要和常用到的INI文件简单描述一下编写规则。
※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※魔域(一) NPC和人物相关1)—索引npc相关资源2)—索引npc模型和贴图资源3)—索引动作3D模型的文件资源4)—索引人物角色、npc、怪物、武器等3D模型的文件资源5)—索引人物角色、npc、怪物、武器、光效等3D贴图的文件资源6)np—是的扩展,用于索引可变型的3D类npc资源,如“帮派柱”npc7)—是的扩展,用于索引地形npc资源,如“家具”、“城门”、“城墙”、“护城河”类npc8)—配置游戏内职业名称及其对应编号(二)怪物相关1)—设置游戏内怪物的表现(三)物品相关1)itemtype.ini(itemtype.dat)——设置游戏内物品的效果和表现例:111083 恐惧首级 20 0 80 0 0 0 0 0 12 0 59306 0 0 0 358 0 0 0 0 90002)—索引武器类资源3)—索引头盔类资源(人物)4)—索引衣服类资源(对人物来说,这个ini索引衣服的模型及贴图;对怪物来说是索引怪物模型及贴图)5)—设置游戏中的商店,并索引商店卖的物品资源(四)魔法、技能相关1)—设置游戏中魔法和技能的效果及表现例:4003 29 速度结界 0 0 0 2 2 10 10 250 0 80 900 0 12 34 21 0 0 0 0 0 0 00 0 0 0 0 0 0 500 1 398 不能继续修习加快移动速度,消耗潜能 noconfirm083(五)特效相关1)—设置和索引游戏中2D光效的资源2)—设置和索引游戏中3D光效的资源3)—索引游戏中3D光效的模型4)—设置游戏中飞行物体的表现和索引相关资源5)—设置玩家在使用某种武器做某个动作时所显示的特效6)—设置和索引游戏中地图特效的资源7)—设置进入某一特定场景时屏幕上特效名称的出现和消失8)—设置人物处于不同状态时客户端的表现效果9)—设置人物角色或怪物在不同状态下的音效(六)地图相关1)—设置和索引游戏中地图的资源(七)其他1)—字符串资源配置文件,目的是在客户端显示和字符串有关的提示2)—记录游戏客户端的屏幕显示模式、登陆区域、帐号等设置3)—设置游戏中“文字动作”选项及其显示内容。
ini文件编写方法
ini文件编写方法一。
ini 文件是一种常见的配置文件格式,在很多软件和系统中都有广泛应用。
要编写一个好的 ini 文件,首先得搞清楚它的基本结构。
1.1 ini 文件通常由节(Section)和键值对(Key-Value Pair)组成。
节就像是一个个分类的文件夹,而键值对则是在这些文件夹里存放的具体信息。
比如说,[Settings] 这就是一个节的名称。
1.2 键值对呢,就是像“Key=Value”这样的形式。
比如说“FontSize=12”,“FontSize”是键,“12”就是值。
二。
在编写 ini 文件时,有一些要点得特别注意。
2.1 命名要清晰明了。
节名和键名都得让人一眼就能看出它是干啥的。
别整那些让人摸不着头脑的名字,不然回头自己都搞不清楚。
2.2 格式要规范。
每行一个键值对,别乱糟糟的,不然读起来就跟一团乱麻似的。
2.3 注释也很重要。
有时候给自己或者别人留个注释,说明一下这个键值是干啥用的,为啥这么设置,能省不少事儿。
三。
再来说说怎么修改和读取 ini 文件。
3.1 有很多编程语言都能处理 ini 文件。
比如说 Python 就有专门的库来读取和修改 ini 文件,用起来挺方便的。
3.2 但不管用啥方法,都得小心谨慎,别一不小心把重要的配置给改坏了,那可就麻烦大了。
编写 ini 文件虽然不算特别复杂,但也得用心去做,才能让它发挥应有的作用。
就像盖房子,基础打牢了,房子才能结实。
可别马马虎虎,不然到时候出了问题,就得返工,费时又费力!。
ini配置文件操作方法
ini配置文件操作方法一、ini文件介绍ini配置文件常用于存储项目全局变量如:接口地址、输出文件路径、项目地址、用户名、密码等二、ini文件编写格式[节点]选项=选项值;表示注释注意:节点名不可以重复【所以写入新节点前要判断是否存在】三、.ini 文件读取1、.ini文件读import configparserconfig = configparser.ConfigParser()config.read('config.ini')# 获取所有节点sec = config.sections()print(sec)# 获取单个节点下所有选项db = config.options(section="database")print(db)# 获取单个节点下某个选项值username = config.get(section="database", option="username")print(username)# 获取某个节点下所有选项及选项值value = config.items(section="database")print(f"获取到的值是:{value}")2、ini文件写# 增加一个节点config.add_section("db")# 给节点增加选项和值config.set(section="db", option="usr", value="chuanzhang") # 保存操作with open(os.path.dirname(__file__)+'/config.ini', mode='w+') as file:config.write(file)file.close()3、删除# 删除节点下某个选项config.remove_option(section="db", option="pwd")with open(os.path.dirname(__file__)+'/config.ini', mode='w+') as opt:config.write(opt)opt.close()# 删除节点config.remove_section("db")# 删除后保存with open(os.path.dirname(__file__)+'/config.ini', mode='w+') as data:config.write(data)data.close()。
.ini文件的介绍及对其进行操作
.ini⽂件的介绍及对其进⾏操作.ini⽂件其实跟.txt⽂件是差不多的,只不过它有⾃⼰的⼀套读取⽅式,对.ini⽂件进⾏操作也有很多⽅法,⽽且现在⽹上还有很多⼈已经把它写成了⼀个类,可以⽅便的对.ini⽂件进⾏操作,我这⾥介绍的是在WIN32控制台项⽬的平台下进⾏对⾮win.ini⽂件进⾏操作。
经典格式:INI⽂件的格式很简单,最基本的三个要素是:parameters,sections和comments。
什么是parameters?INI所包含的最基本的“元素”就是parameter;每⼀个parameter都有⼀个name和⼀个value,name和value是由等号“=”隔开。
name在等号的左边。
如:name = value什么是sections ?所有的parameters都是以sections为单位结合在⼀起的。
所有的section名称都是独占⼀⾏,并且sections名字都被⽅括号包围着([ and ])。
在section声明后的所有parameters都是属于该section。
对于⼀个section没有明显的结束标志符,⼀个section的开始就是上⼀个section的结束,或者是end of the file。
Sections⼀般情况下不能被nested,当然特殊情况下也可以实现sections的嵌套。
section如下所⽰:[section]什么是comments ?在INI⽂件中注释语句是以分号“;”开始的。
所有的所有的注释语句不管多长都是独占⼀⾏直到结束的。
在分号和⾏结束符之间的所有内容都是被忽略的。
注释实例如下:;comments text下⾯先介绍⼏个函数,它们的头⽂件是windows.h⼀、对.ini⽂件写⼊数据:函数原型:BOOL WritePrivateProfileString(LPCTSTR lpAppName,LPCTSTR lpKeyName,LPCTSTR lpString,LPCTSTR lpFileName); 其中各参数的意义:LPCTSTR lpAppName 是INI⽂件中的⼀个字段名.LPCTSTR lpKeyName 是lpAppName下的⼀个键名,通俗讲就是变量名.LPCTSTR lpString 是键值,也就是变量的值,不过必须为LPCTSTR型或CString型的.LPCTSTR lpFileName 是完整的INI⽂件名.2.具体使⽤⽅法:设现有⼀名学⽣,需把他的姓名和年龄写⼊ c:\stud\student.ini ⽂件中.CString strName,strTemp;strName="ZhangSan";::WritePrivateProfileString("StudentInfo","Name",strName,"c:\\stud\\student.ini");此时 c:\stud\student.ini⽂件中的内容如下:要将整型的数据保存,将整型的转换为串型的,然后向上⾯那样操作就⾏了⼆.将信息从INI⽂件中读⼊程序中的变量.1.所⽤的WINAPI函数原型为:DWORD GetPrivateProfileString(LPCTSTR lpAppName,LPCTSTR lpKeyName,LPCTSTR lpDefault,LPTSTR lpReturnedString,DWORD nSize,LPCTSTR lpFileName);其中各参数的意义:前⼆个参数与 WritePrivateProfileString中的意义⼀样.lpDefault : 如果INI⽂件中没有前两个参数指定的字段名或键名,则将此值赋给变量.lpReturnedString : 接收INI⽂件中的值的CString对象,即⽬的缓存器.nSize : ⽬的缓存器的⼤⼩.lpFileName : 是完整的INI⽂件名.2.具体使⽤⽅法:现要将上⼀步中写⼊的学⽣的信息读⼊程序中.CString strStudName;int nStudAge;GetPrivateProfileString("StudentInfo","Name","默认姓名",strStudName.GetBuffer(MAX_PATH),MAX_PATH,"c:\\stud\\student.ini");执⾏后 strStudName 的值为:"张三",若前两个参数有误,其值为:"默认姓名".3.读⼊整型值要⽤另⼀个WINAPI函数:UINT GetPrivateProfileInt(LPCTSTR lpAppName,LPCTSTR lpKeyName,INT nDefault,LPCTSTR lpFileName);这⾥的参数意义与上相同.使⽤⽅法如下:nStudAge=GetPrivateProfileInt("StudentInfo","Age",10,"c:\\stud\\student.ini");下⾯是我⾃⼰学习的时候⽤来测试的WS代码,编译环境VS2003,系统XP代码1 #include "stdafx.h"2 #include "windows.h"3 #include "atlstr.h"45int _tmain(int argc, _TCHAR* argv[])6 {7 LPCTSTR strTemp = "ZhangSan";8 CString str;9 str = "nihao";10int nAge = 12;11 str.Format("%d",nAge);12 CString strStudName;13int nStudAge;14 ::WritePrivateProfileString("StudentInfo","Name",strTemp,15"C:\\Documents and Settings\\Administrator\\桌⾯\\noname\\student.ini");16 ::WritePrivateProfileString("StudentInfo","Age",str,17"C:\\Documents and Settings\\Administrator\\桌⾯\\noname\\student.ini");18 ::GetPrivateProfileString("StudentInfo","Name","noname",strStudName.GetBuffer(MAX_PATH),MAX_PATH, 19"C:\\Documents and Settings\\Administrator\\桌⾯\\noname\\student.ini");20 nStudAge = ::GetPrivateProfileInt("StudentInfo","Age",10,21"C:\\Documents and Settings\\Administrator\\桌⾯\\noname\\student.ini");22 printf("%s\n",strStudName);23 printf("%d\n",nStudAge);24 getchar();25return0;26 }在当我郁闷,如果parameters相同的时候,要怎么样读取数据,我看了⼀下.ini⽂件⾥⾯的内容,发现在同⼀个section下还没有出现过有相同parameters的情况出现最后附上函数总表函数含义GetProfileInt从win.ini⽂件指定Section中读取⼀个int属性值GetProfileSection从win.ini⽂件指定Section中获取所有的属性GetProfileString从win.ini⽂件指定Section中读取⼀个⽂本属性值WriteProfileSection向win.ini⽂件写⼊⼀个SectionWriteProfileString向win.ini⽂件指定Section中写⼊⼀个⽂本属性值GetPrivateProfileInt从指定的INI⽂件的Section中读取⼀个int属性值GetPrivateProfileSection从指定的INI⽂件中读取指定的SectionGetPrivateProfileSectionNames从指定的INI⽂件中获取所有的Section名GetPrivateProfileString从指定的INI⽂件的Section中读取⼀个⽂本属性值GetPrivateProfileStruct从指定的INI⽂件的Section中读取⼀个结构属性值WritePrivateProfileSection向指定的INI⽂件写⼊⼀个SectionWritePrivateProfileString向指定的INI⽂件的Section中写⼊⼀个⽂本属性值WritePrivateProfileStruct向指定的INI⽂件的Section中写⼊⼀个结构属性值。
ini是什么文件格式?.ini文件怎么打开?
ini是什么⽂件格式?.ini⽂件怎么打开?
ini⽂件是系统初始化⽂件,统管windows的各项配置,是windows的系统配置⽂件所采⽤的存储格式,我们使⽤的软件中的配置信息就储存在ini⽂件中。
⼀般情况下正常的设置我们在软件界⾯中就可以实现,但在某些情况,还是要直接编辑ini才⽅便,⽼鸟们都习惯直接编辑ini⽂件。
ini是什么⽂件?
作为系统配置⽂件ini⽂件可以⽤来存放软件信息、注册表信息等。
ini⽂件统管windows的各项配置,在我们使⽤的应⽤程序下⼀般都有ini⽂件,⽤来配置软件以实现不同⽤户的要求。
⼩⽩们不⽤直接编辑这些ini⽂件,在软件的图形界⾯下进⾏设置对⼩⽩们来说更为简单直接。
ini⽂件如何打开?
ini⽂件可以⽤记事本打开,直接进⾏编辑,ini⽂件内存储的各项配置信息都可以编辑,但如果操作不当,可能引起软件崩溃,不推荐新⼿尝试。
下⾯给⼤家推荐⼏款强⼤的⽂本编辑器,可以完全替代记事本,完美⽀持打开ini⽂件。
写了这么多,相信读者对ini⽂件有了更深的了解。
VB如何操作INI文件方法详解
VB如何操作INI文件方法详解在程序中经常要用到设置或者其他少量数据的存盘,以便程序在下一次执行的时候可以使用,比如说保存本次程序执行时窗口的位置、大小、一些用户设置的数据等等,在Dos 下编程的时候,我们一般自己产生一个文件,由自己把这些数据写到文件中,然后在下一次执行的时候再读出来使用。
在Win32 编程中当然你也可以这样干,但Windows 已经为我们提供了两种方便的办法,那就是使用注册表或者ini 文件(Profile)来保存少量数据。
本文中先介绍一下 .ini 文件的使用。
ini 文件是文本文件,中间的数据格式一般为:[Section1 Name]KeyName1=value1KeyName2=value2...[Section2 Name]KeyName1=value1KeyName2=value2ini 文件可以分为几个 Section,每个 Section 的名称用 [] 括起来,在一个 Section 中,可以有很多的 Key,每一个 Key 可以有一个值并占用一行,格式是 Key=value,Win32 对 ini 文件操作的 api 中,有一部分是对 win.ini 操作的,有一部分是对用户自定义的 ini 文件操作的。
Win.in 和 system.ini 是Windows的两个非常重要的初始化文件,Windows将用户所作的选择以及各种变化的系统信息记录在这两个文件中。
System.ini 描述了系统硬件的当前状态,Win.ini 文件则包含了Windows 系统运行环境的当前配置。
由于 Win.ini 文件的重要性和常用性,Win32 中有专门对 Win.ini 进行操作的 api,它们是:GetProfileInt - 从 Win.ini 文件的某个 Section 取得一个 key 的整数值,它的原形是:GetProfileInt(LPCTSTR lpAppName, // 指向包含 Section 名称的字符串地址LPCTSTR lpKeyName, // 指向包含 Key 名称的字符串地址INT nDefault // 如果 Key 值没有找到,则返回缺省的值是多少);如果 Key 值没有找到的话,返回值是 nDefault 指定的缺省值,如果 Key 中的值是负数,则返回 0,如果 Key 指定的是数字和字符串的混合,则返回数字部分的值,比如说 x=1234abcd,则返回 1234GetProfileString - 从 Win.ini 文件的某个 Section 取得一个 key 的字符串,它的原形是:GetProfileString(LPCTSTR lpAppName, // 指向包含 Section 名称的字符串地址LPCTSTR lpKeyName, // 指向包含 Key 名称的字符串地址LPCTSTR lpDefault, // 如果 Key 值没有找到,则返回缺省的字符串的地址LPTSTR lpReturnedString, // 返回字符串的缓冲区地址DWORD nSize // 缓冲区的长度);返回的字符串在缓冲区内,返回的eax 值是返回的字符串的长度(不包括尾部的0)GetProfileSection - 从 Win.ini 文件中读出整个 Section 的内容,它的原形是:GetProfileSection(LPCTSTR lpAppName, // 指向包含 Section 名称的字符串地址LPTSTR lpReturnedString, // 返回数据的缓冲区地址DWORD nSize // 返回数据的缓冲区长度);WriteProfileSection - 将一个整个 Section 的值写入 Win.ini 文件的指定 Section 中,它的原形是:WriteProfileSection(LPCTSTR lpAppName, // 指向包含 Section 名称的字符串地址LPCTSTR lpString // 要写入的数据的地址);如果 Win.ini 没有指定的 Section,API 会新建立一个并写入数据,如果已经存在,则先删除原来 Seciton 中所有的 Key 值然后写入新的。
python-ini文件使用(读和写)
python-ini⽂件使⽤(读和写)注意事项:1.读⽂件:read(filename):读取ini⽂件中的内容sections():得到所有section,返回列表形式options(section):得到给定section的所有optionitems(section):得到指定section的所有key-valueget(section,option):得到section中的option值,返回str类型get(section,option):得到section中的option值,返回int类型2.写⽂件:add_section(sectionname):添加⼀个名为sectionname的新sectionset(sectionname,option,value):设置sectionname的option和value的值注意:最后要使⽤write把内容写⼊ini⽂件:write(open(filenama,'wb'))直接贴出代码来:#coding=utf-8'''Created on 2015.10.30ini配置⽂件读写的使⽤'''import ConfigParseriniFileUrl="conf.ini"conf=ConfigParser.ConfigParser() #⽣成conf对象conf.read(iniFileUrl) #读取ini配置⽂件def readConfigFile():"""sections:配置⽂件中[]中的值options:每组中的键items:键-值的列表形式"""# 获取每组类型中的section值sections = conf.sections() # 获取所有sectionsprint "---conf.ini⽂件中的section内容有:", sections# 获取每⾏数据的键即指定section的所有optionprint "---group_a的所有键为:", conf.options("group_a")print "---group_b的所有键为:", conf.options("group_b")# 获取指定section的所有键值对print "---group_a的所有键-值为:", conf.items("group_a")# 指定section,option读取具体值print "---group_a组的a_key1值为:", conf.get("group_a", "a_key1")print "---group_b组的b_key1值为(取整数类型):", conf.getint("group_b", "b_key1")def writeConfigFile():"""根据分组名、键名修改为新键值@param sections: section分组名@param key: 分组中的key@param newvalue: 需要修改后的键值"""conf.set("group_b", "b_key3", "new3") #指定section和option则更新valueconf.set("group_b", "b_key5", "value5") #指定section,则增加option和valueconf.add_section("group_d") #添加section组conf.set("group_d", "d_key1", "value1") #给添加的section组增加option-value#写回配置⽂件conf.write(open(iniFileUrl, "wb"))readConfigFile()writeConfigFile()'''运⾏结果:---conf.ini⽂件中的section内容有: ['group_a', 'group_b', 'group_c']---group_a的所有键为: ['a_key1', 'a_key2']---group_b的所有键为: ['b_key1', 'b_key2', 'b_key3', 'b_key4', 'b_key5']---group_a的所有键-值为: [('a_key1', '20'), ('a_key2', '10')]---group_a组的a_key1值为: 20---group_b组的b_key1值为(取整数类型): 121 '''附赠conf.ini⽂件:[group_a]a_key1 = 20a_key2 = 10[group_b]b_key1 = 121b_key2 = b_value2b_key3 = new3b_key4 = 127.0.0.1b_key5 = value5[group_c]c_key1 = value1[group_d]d_key1 = value1。
MFC文件读写之ini文件
MFC文件读写之ini文件什么是ini文件?initialization File,即为初始化文件,是windows的系统配置文件所采用的存储格式,统管windows的各项配置。
或者作为项目中的配置文件,为整个项目所共用。
文件格式为节、键、值。
其中节为[Section name], 参数为key (键)=value(值)。
ini文件中注解使用分号表示(;),在分号后面的文字,直到该行结尾都全部为注解。
[Section Name]用来表示一个段落,INI文件可能是项目中共用的,所以使用[Section Name]段名来区分不同用途的参数区。
key就用来表示参数名,value表示对应的值。
ini文件读1、从系统的win.ini文件中读取信息(1) 读取字符串DWORD GetProfileString(LPCTSTR lpAppName, // 节名【不区分大小写】LPCTSTR lpKeyName, // 键名,读取该键的值【不区分大小写】LPCTSTR lpDefault, // 若指定的键不存在,该值作为读取的默认值LPTSTR lpReturnedString, // 一个指向缓冲区的指针,接收读取的字符串DWORD nSize // 指定lpReturnedString指向的缓冲区的大小)如:CString str;::GetProfileString("Test","id","Error",str.GetBuffer(20),20);(2) 读取整数UINT GetProfileInt(LPCTSTR lpAppName, // 同上LPCTSTR lpKeyName, // 同上INT nDefault // 若指定的键名不存在,该值作为读取的默认值)2 从自己的ini文件中读取信息函数原型DWORD GetPrivateProfileString(string lpszSection,string lpszKey,string lpszDefault, lpszReturnBuffer, cchReturnBuffer, lpszFile)GetPrivateProfileString("DBInfo","IP","",IP.GetBuffer(MAX_PA TH),MAX_PATH,iniFilePath);【测过】CString IP, iniFilePath.GetPrivateProfileString(Sectionname,key,"",key.GetBuffer(MAX_PATH),MAX_PATH,ini文件路径+文件名);其中第一个参数为段名,第二个参数为参数名称,第三个参数为没找到key返回的默认值,第四个参数为指定一个字串缓冲区,第五个参数为指定装载到lpReturnedString缓冲区的最大字符数量,第六个参数为初始化文件的名字,如没有指定一个完整路径名,windows 就在Windows目录中查找文件。
ini格式文件操作方法
ini格式⽂件操作⽅法ini格式⽂件ini⽂件是Initialization File的缩写,平时⽤于存储软件的的配置⽂件。
例如:MySQL数据库的配置⽂件。
[mysqld]datadir=/var/lib/mysqlsocket=/var/lib/mysql/mysql.socklog-bin=py-mysql-bincharacter-set-server=utf8collation-server=utf8_general_cilog-error=/var/log/mysqld.log# Disabling symbolic-links is recommended to prevent assorted security riskssymbolic-links=0[mysqld_safe]log-error=/var/log/mariadb/mariadb.logpid-file=/var/run/mariadb/mariadb.pid[client]default-character-set=utf8这种格式是可以直接使⽤open来出来,考虑到⾃⼰处理⽐较⿇烦,所以Python为我们提供了更为⽅便的⽅式。
import configparserconfig = configparser.ConfigParser()config.read('files/my.ini', encoding='utf-8')# config.read('/Users/wupeiqi/PycharmProjects/luffyCourse/day09/files/my.ini', encoding='utf-8')# 1.获取所有的节点"""result = config.sections()print(result) # ['mysqld', 'mysqld_safe', 'client']"""# 2.获取节点下的键值"""result = config.items("mysqld_safe")print(result) # [('log-error', '/var/log/mariadb/mariadb.log'), ('pid-file', '/var/run/mariadb/mariadb.pid')]for key, value in config.items("mysqld_safe"):print(key, value)"""# 3.获取某个节点下的键对应的值"""result = config.get("mysqld","collation-server")print(result)"""# 4.其他# 4.1 是否存在节点# v1 = config.has_section("client")# print(v1)# 4.2 添加⼀个节点# config.add_section("group")# config.set('group','name','wupeiqi')# config.set('client','name','wupeiqi')# config.write(open('files/new.ini', mode='w', encoding='utf-8'))# 4.3 删除# config.remove_section('client')# config.remove_option("mysqld", "datadir")# config.write(open('files/new.ini', mode='w', encoding='utf-8'))读取所有节点import configparserconfig = configparser.ConfigParser()config.read('/Users/wupeiqi/PycharmProjects/luffyCourse/day09/files/my.conf', encoding='utf-8')# config.read('my.conf', encoding='utf-8')ret = config.sections()print(ret)>>输出['mysqld', 'mysqld_safe', 'client']读取节点下的键值import configparserconfig = configparser.ConfigParser()config.read('/Users/wupeiqi/PycharmProjects/luffyCourse/day09/files/my.conf', encoding='utf-8') # config.read('my.conf', encoding='utf-8')item_list = config.items("mysqld_safe")print(item_list)>>输出[('log-error', '/var/log/mariadb/mariadb.log'), ('pid-file', '/var/run/mariadb/mariadb.pid')]读取节点下值(根据节点+键)import configparserconfig = configparser.ConfigParser()config.read('/Users/wupeiqi/PycharmProjects/luffyCourse/day09/files/my.conf', encoding='utf-8') value = config.get('mysqld', 'log-bin')print(value)>>输出py-mysql-bin检查、删除、添加节点import configparserconfig = configparser.ConfigParser()config.read('/Users/wupeiqi/PycharmProjects/luffyCourse/day09/files/my.conf', encoding='utf-8') # config.read('my.conf', encoding='utf-8')# 检查has_sec = config.has_section('mysqld')print(has_sec)# 添加节点config.add_section("SEC_1")# 节点中设置键值config.set('SEC_1', 'k10', "123")config.set('SEC_1', 'name', "哈哈哈哈哈")config.add_section("SEC_2")config.set('SEC_2', 'k10', "123")# 内容写⼊新⽂件config.write(open('/Users/wupeiqi/PycharmProjects/luffyCourse/day09/files/xxoo.conf', 'w'))# 删除节点config.remove_section("SEC_2")# 删除节点中的键值config.remove_option('SEC_1', 'k10')config.write(open('/Users/wupeiqi/PycharmProjects/luffyCourse/day09/files/new.conf', 'w'))。
INI文件格式及其读写
INI文件格式及其读写ini文件(Initialization file),这种类型的文件中通常存放的是一个程序的初始化信息。
ini文件由若干个节(Section)组成,每个Section 由若干键(Key)组成,每个Key可以赋相应的值。
读写ini文件实际上就是读写某个的Section中相应的Key的值,而这只要借助几个函数即可完成。
1. 把信息写入系统的win.ini文件[cpp] view plaincopy1.BOOL WriteProfileString(2.LPCTSTR lpAppName, // 节的名字,是一个以0结束的字符串3.LPCTSTR lpKeyName, // 键的名字,是一个以0结束的字符串。
若为NULL,则删除整个节4.LPCTSTR lpString // 键的值,是一个以0结束的字符串。
若为NULL,则删除对应的键5.)2、从系统的win.ini文件中读取信息[cpp] view plaincopy1.DWORD GetProfileString(2.LPCTSTR lpAppName, // 节名3.LPCTSTR lpKeyName, // 键名,读取该键的值4.LPCTSTR lpDefault, // 若指定的键不存在,该值作为读取的默认值5.LPTSTR lpReturnedString, // 一个指向缓冲区的指针,接收读取的字符串6.DWORD nSize // 指定lpReturnedString指向的缓冲区的大小7.)[cpp] view plaincopy1.UINT GetProfileInt(2.LPCTSTR lpAppName, // 同上3.LPCTSTR lpKeyName, // 同上4.INT nDefault // 若指定的键名不存在,该值作为读取的默认值5.)3.写入读取自己的ini简单的INI例子:[html] view plaincopy1.[Service]=AutoRun Helper3.Description=2004.ApplicationRootKey64=Software\Wow6432Node\Sepang \AutoRun Modem5.[Registry]6.ServiceRootKey=Software\AutoRun Modem Service7.ApplicationRootKey=Software\Sepang\AutoRun Modem8.ApplicationRootKey64=Software\Wow6432Node\Sepang \AutoRun Modem下面示例显示它是如何生成的:[cpp] view plaincopy1.void XXXXX::OnBnClickedWriteIniBtn()2.{3.// ----------------------------------------4.// 模拟写入一个config.ini5.// ----------------------------------------6.7.// 得到exe执行路径.8.TCHAR tcExePath[MAX_PATH] = {0};9.::GetModuleFileName(NULL, tcExePath, MAX_PATH);10.// 设置ini路径到exe同一目录下11.#ifndef CONFIG_FILE12.#define CONFIG_FILE (TEXT("Config1.ini"))13.#endif14.//_tcsrchr() 反向搜索获得最后一个'\\'的位置,并返回该位置的指针15.TCHAR *pFind = _tcsrchr(tcExePath, '\\');16.if (pFind == NULL)17.{18.return;19.}20.*pFind = '\0';21.22.CString szIniPath = tcExePath;23.szIniPath += "\\";24.szIniPath += CONFIG_FILE;25.26.//--------------------------------------------------------27.//BOOL WritePrivateProfileString(28.// LPCTSTR lpAppName, //节的名字,是一个以0结束的字符串29.// LPCTSTR lpKeyName, //键的名字,是一个以0结束的字符串。
INI文件介绍
INI⽂件介绍INI英⽂名称(InitializationFile)INI⽂件是Window系统配置⽂件的扩展名.Shiro的全局配置⽂件就是.ini⽂件,ini中数据都是固定数据,后⾯会⽤数据库中数据替代下⾯users和roles(固定数据部分).ini⽂件内容的语法和.properties类似都是key=value,value格式.INI⽂件中包含了四个部分:1 [main] 主体部分.这部分配置类对象,或设置属性等操作.内置了根对象:securityManager,注意对象名⼤⼩写。
[main]securityManager.属性=值key=valuesecurityManager.对象属性=com.bjsxt.pojo.People #后⾯值是字符串peo=com.bjsxt.pojo.PeoplesecurityManager.对象属性=$peo #出现$时才表⽰是引⽤对象1 [users]定义⽤户,密码及⽤户可以具有的⾓⾊.[users]⽤户名=密码,⾓⾊1,⾓⾊2 #⾓⾊部分可以省略.zhangsan=zszhangsan=zs,role1,role21 [roles]定于⾓⾊具有的权限[roles]⾓⾊名=权限名,权限名role1=user:insert,user:updaterole2=insert,updaterole3=user:*4[urls]定义哪个控制器被哪个过滤器过滤.Shiro内置很多过滤器。
此部分主要在WEB应⽤中anon:不认证也可以访问。
例如:/admin/**=anonauthc:必须认证。
authcBasic:没有参数时表⽰httpBasic认证(客户端认证⽅式)。
logout:退出。
noSessionCreation:新增Filter,表⽰没有Session创建。
perms:判断是有具有指定权限。
例如:/admin/user/**=perms[“per1”,”per2”]。
INI文件格式及其操作代码
INI⽂件格式及其操作代码INI⽂件格式如下:[Database]server=wlqdatabase=mydatabaseuid=sapwd=123456说明:(有4个key)Section为:DatabaseKey为:server database uid pwd/***************代码******************/using System;using System.IO;using System.Runtime.InteropServices;using System.Text;namespace Sx_Mdi{/// <summary>/// Summary description for Class1./// </summary>public class IniFile{//⽂件INI名称public string Path;////声明读写INI⽂件的API函数[DllImport("kernel32")]private static extern long WritePrivateProfileString(string section,string key,string val,string filePath);[DllImport("kernel32")]private static extern int GetPrivateProfileString(string section,string key,string def,StringBuilder retVal,int size,string filePath); //类的构造函数,传递INI⽂件名public IniFile(string inipath){//// TODO: Add constructor logic here//Path = inipath;}//写INI⽂件public void IniWriteValue(string Section,string Key,string Value){WritePrivateProfileString(Section,Key,Value,this.Path);}//读取INI⽂件指定public string IniReadValue(string Section,string Key){StringBuilder temp = new StringBuilder(255);int i = GetPrivateProfileString(Section,Key,"",temp,255,this.Path);return temp.ToString();}}}操作范例:public static SqlConnection MyConnection(){string sPath;string ServerName,userId,sPwd,DataName;sPath = GetPath();IniFile ini = new IniFile(sPath);ServerName = ini.IniReadValue ("Database","server");userId = ini.IniReadValue ("Database","uid");sPwd = ini.IniReadValue ("Database","pwd");DataName = ini.IniReadValue ("Database","database");string strSql = "server =" + ServerName+";uid ="+ userId +";pwd =;database ="+ DataName; SqlConnection myConn=new SqlConnection(strSql); return myConn;}/***************代码******************/。
ini文件写法
ini文件写法摘要:一、ini文件的概述1.ini文件的概念2.ini文件的作用3.ini文件的组成部分二、ini文件的写法1.创建ini文件的基本结构2.设置键值对3.注释的使用4.格式规范三、ini文件的读取1.读取ini文件的方法2.解析ini文件的内容3.获取和处理键值对四、ini文件的常见应用场景1.配置文件的存储和读取2.应用程序的参数设置3.开发中的数据存储和读取正文:ini文件是一种配置文件格式,常用于存储和读取应用程序的配置信息。
它的组成部分主要包括节(section)、键(key)和值(value)。
在ini文件中,节用方括号[]括起来,键和值用等号=连接。
此外,ini文件允许使用注释,注释以分号;开始,直到行末尾。
ini文件的写法比较简单。
首先,需要创建一个基本的文件结构,包括文件名和扩展名.ini。
然后,根据需要设置键值对,例如:```[section1]key1=value1key2=value2[section2]key3=value3```在ini文件中,可以使用注释来对配置信息进行说明。
注释以分号;开始,直到行末尾,例如:```; 这是一个注释[section1]key1=value1key2=value2```要读取ini文件,可以使用编程语言提供的相应方法。
例如,在Python 中,可以使用configparser库来实现ini文件的读取。
首先,需要安装configparser库,然后按照以下步骤进行操作:```pythonimport configparser# 创建一个ConfigParser对象config = configparser.ConfigParser()# 读取ini文件config.read("example.ini")# 获取和处理键值对print(config.get("section1", "key1")) # 输出:value1print(config.getint("section1", "key2")) # 输出:2```ini文件在实际应用中有很多场景,如存储和读取配置信息、设置应用程序参数、开发过程中的数据存储和读取等。
ini文件的库函数
ini文件的库函数摘要:1.ini 文件的概述2.ini 文件的库函数介绍3.ini 文件库函数的具体使用方法4.ini 文件库函数的应用实例5.总结正文:【1.ini 文件的概述】ini 文件是一种常见的配置文件格式,常用于Windows 系统中。
它以纯文本形式存储配置信息,通常由一组键值对组成,其中每个键和一个值对应一个配置参数。
这种格式的文件容易阅读和编写,因此广泛应用于各种应用程序和操作系统中。
【2.ini 文件的库函数介绍】在处理ini 文件时,我们通常需要使用一些库函数来实现对文件的读写操作。
在Python 中,可以使用内置的configparser 模块来处理ini 文件。
这个模块提供了一系列的库函数,包括读取、写入、删除和修改ini 文件中的数据等操作。
【3.ini 文件库函数的具体使用方法】下面我们来介绍一下configparser 模块中常用的一些库函数:1.读取ini 文件:使用configparser 模块中的read() 函数可以读取ini 文件中的数据。
例如:```pythonimport configparserconfig = configparser.ConfigParser()config.read("example.ini")print(config.get("section_name", "key_name"))```2.写入ini 文件:使用configparser 模块中的write() 函数可以将数据写入到ini 文件中。
例如:```pythonimport configparserconfig = configparser.ConfigParser()config.add_section("section_name")config.set("section_name", "key_name", "new_value")config.write("example.ini")```3.删除ini 文件中的数据:使用configparser 模块中的remove() 函数可以删除ini 文件中的数据。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
INI 文件的操作--------------------------------------------------------------------------------概述在程序中经常要用到设置或者其他少量数据的存盘,以便程序在下一次执行的时候可以使用,比如说保存本次程序执行时窗口的位置、大小、一些用户设置的数据等等,在Dos 下编程的时候,我们一般自己产生一个文件,由自己把这些数据写到文件中,然后在下一次执行的时候再读出来使用。
在Win32 编程中当然你也可以这样干,但Windows 已经为我们提供了两种方便的办法,那就是使用注册表或者ini 文件(Profile)来保存少量数据。
本文中先介绍一下.ini 文件的使用。
ini 文件是文本文件,中间的数据格式一般为:[Section1 Name]KeyName1=value1KeyName2=value2...[Section2 Name]KeyName1=value1KeyName2=value2ini 文件可以分为几个Section,每个Section 的名称用[] 括起来,在一个Section 中,可以有很多的Key,每一个Key 可以有一个值并占用一行,格式是Key=value,Win32 对ini 文件操作的api 中,有一部分是对win.ini 操作的,有一部分是对用户自定义的ini 文件操作的。
Win.in 和system.ini 是Windows的两个非常重要的初始化文件,Windows将用户所作的选择以及各种变化的系统信息记录在这两个文件中。
System.ini 描述了系统硬件的当前状态,Win.ini 文件则包含了Windows 系统运行环境的当前配置。
由于Win.ini 文件的重要性和常用性,Win32 中有专门对Win.ini 进行操作的api,它们是:GetProfileInt - 从Win.ini 文件的某个Section 取得一个key 的整数值,它的原形是:GetProfileInt(LPCTSTR lpAppName, // 指向包含Section 名称的字符串地址LPCTSTR lpKeyName, // 指向包含Key 名称的字符串地址INT nDefault // 如果Key 值没有找到,则返回缺省的值是多少);如果Key 值没有找到的话,返回值是nDefault 指定的缺省值,如果Key 中的值是负数,则返回0,如果Key 指定的是数字和字符串的混合,则返回数字部分的值,比如说x=1234abcd,则返回1234GetProfileString - 从Win.ini 文件的某个Section 取得一个key 的字符串,它的原形是:GetProfileString(LPCTSTR lpAppName, // 指向包含Section 名称的字符串地址LPCTSTR lpKeyName, // 指向包含Key 名称的字符串地址LPCTSTR lpDefault, // 如果Key 值没有找到,则返回缺省的字符串的地址LPTSTR lpReturnedString, // 返回字符串的缓冲区地址DWORD nSize // 缓冲区的长度);返回的字符串在缓冲区内,返回的eax 值是返回的字符串的长度(不包括尾部的0)GetProfileSection - 从Win.ini 文件中读出整个Section 的内容,它的原形是:GetProfileSection(LPCTSTR lpAppName, // 指向包含Section 名称的字符串地址LPTSTR lpReturnedString, // 返回数据的缓冲区地址DWORD nSize // 返回数据的缓冲区长度);WriteProfileSection - 将一个整个Section 的值写入Win.ini 文件的指定Section 中,它的原形是:WriteProfileSection(LPCTSTR lpAppName, // 指向包含Section 名称的字符串地址LPCTSTR lpString // 要写入的数据的地址);如果Win.ini 没有指定的Section,API 会新建立一个并写入数据,如果已经存在,则先删除原来Seciton 中所有的Key 值然后写入新的。
WriteProfileString - 将一个Key 值写入Win.ini 文件的指定Section 中,它的原形是:WriteProfileString(LPCTSTR lpAppName, // 指向包含Section 名称的字符串地址LPCTSTR lpKeyName, // 指向包含Key 名称的字符串地址LPCTSTR lpString // 要写的字符串地址);如果Win.ini 没有指定的Section,API 会新建Section,如果没有指定的Key 则新建一个Key 并写入数据,如果已经存在,则用字符串代替原来的值。
以上的Api 是对Win.ini 操作的,当然对于我们来说,用的更多的是在程序运行的目录中建立自己的ini 文件,如果需要对自己的ini 文件操作,就要用到另一组Api,这一组api 和上面的很象,只要把上面一组的Profile 换成PrivateProfile(私有的)就可以了,参数中也相应的多了一个ini 文件名的参数。
例如GetPrivateProfileInt、GetPrivateProfileSection、WritePrivateProfileString 等等,下面分别介绍:GetPrivateProfileInt - 从ini 文件的某个Section 取得一个key 的整数值,它的原形是:GetPrivateProfileInt(LPCTSTR lpAppName, // 指向包含Section 名称的字符串地址LPCTSTR lpKeyName, // 指向包含Key 名称的字符串地址INT nDefault // 如果Key 值没有找到,则返回缺省的值是多少LPCTSTR lpFileName // ini 文件的文件名);中间参数和返回值的定义和GetProfileInt 是一样的。
GetPrivateProfileString - 从ini 文件的某个Section 取得一个key 的字符串,它的原形是:GetPrivateProfileString(LPCTSTR lpAppName, // 指向包含Section 名称的字符串地址LPCTSTR lpKeyName, // 指向包含Key 名称的字符串地址LPCTSTR lpDefault, // 如果Key 值没有找到,则返回缺省的字符串的地址LPTSTR lpReturnedString, // 返回字符串的缓冲区地址DWORD nSize // 缓冲区的长度LPCTSTR lpFileName // ini 文件的文件名);GetPrivateProfileSection - 从ini 文件中读出整个Section 的内容,它的原形是:GetPrivateProfileSection(LPCTSTR lpAppName, // 指向包含Section 名称的字符串地址LPTSTR lpReturnedString, // 返回数据的缓冲区地址DWORD nSize // 返回数据的缓冲区长度LPCTSTR lpFileName // ini 文件的文件名);这个api 可以读出整个section 的内容,当你不知道section 中有哪些key 的时候,可以使用这个api 将整个section 读出后再处理。
GetPrivateProfileSectionNames - 从ini 文件中获得Section 的名称,它的原形是:GetPrivateProfileSectionNames(LPTSTR lpszReturnBuffer, // 返回数据的缓冲区地址DWORD nSize // 返回数据的缓冲区长度LPCTSTR lpFileName // ini 文件的文件名);如果ini 中有两个Section: [sec1] 和[sec2],则返回的是'sec1',0,'sec2',0,0 ,当你不知道ini 中有哪些section 的时候可以用这个api 来获取名称WritePrivateProfileSection - 将一个整个Section 的内容入ini 文件的指定Section 中,它的原形是:WritePrivateProfileSection(LPCTSTR lpAppName, // 指向包含Section 名称的字符串地址LPCTSTR lpString // 要写入的数据的地址LPCTSTR lpFileName // ini 文件的文件名);WritePrivateProfileString - 将一个Key 值写入ini 文件的指定Section 中,它的原形是:WritePrivateProfileString(LPCTSTR lpAppName, // 指向包含Section 名称的字符串地址LPCTSTR lpKeyName, // 指向包含Key 名称的字符串地址LPCTSTR lpString // 要写的字符串地址LPCTSTR lpFileName // ini 文件的文件名);如果ini 中没有指定的Section,API 会新建Section,如果没有指定的Key 则新建一个Key 并写入数据,如果已经存在,则用字符串代替原来的值。
当指定的ini 也不存在的时候,API 会自动建立一个新的文件,所以使用ini 的好处是我们不必为了保存少量的数据涉及到文件操作,就连查找文件是否存在的操作都不必要。
使用要点:在我们实际使用的时候,用的最多的是GetPrivateProfileString 和WritePrivateProfileString,但在对自定义ini 文件操作的时候要注意的是,如果lpFileName 指定的文件没有路径的话,Api 会去Windows 的安装目录去找而不会在当前目录找,但是每次用到ini 函数要获取当前路径显然太麻烦了,这里有一个变通的办法,你只要在ini 文件名前面加上.\ 就可以了,比如说要对本目录下的user.ini 操作,那么文件名就是'.\user.ini' 这样显然比较方便。
另外,当你要把一个Key 清除的时候,可以使用把lpString 指向一个空的字符串然后使用WritePrivateProfileString。