IniFile Ini操作
- 格式:docx
- 大小:24.79 KB
- 文档页数:16
ini文件用法-回复Ini文件用法Ini文件是一种常见的配置文件格式,它被广泛应用于各种软件和操作系统中。
它的简洁和易于使用使得它成为配置文件的首选格式之一。
本文将逐步介绍ini文件的用法,并对其常见的操作进行详细解释。
I. 什么是Ini文件?Ini文件是一种普遍存在于Windows操作系统中的配置文件格式。
它由一系列节(section)和键值对(key-value pair)组成,用于存储和传递应用程序的配置信息。
Ini文件中的每个节都被方括号([])包围,而键值对则以键和值之间的等号(=)进行分隔。
II. Ini文件的基本语法一个基本的Ini文件由多个节组成,每个节都由方括号括起来。
每个节下面可以有多个键值对,键和值之间用等号连接。
例如:[section1]key1=value1key2=value2[section2]key3=value3key4=value4III. Ini文件的读写操作Ini文件常用于存储应用程序的配置信息。
在应用程序中,可以使用各种编程语言提供的函数或库来读取和写入Ini文件。
以下是一些常见的读写操作:1. 读取Ini文件读取Ini文件可以根据需要读取整个文件,或者只读取特定节或键的值。
大多数编程语言都提供了相应的函数或库来实现这些操作。
读取整个Ini 文件的示例代码如下:pythonimport configparserconfig = configparser.ConfigParser()config.read('config.ini')print(config.sections()) # 打印所有的节print(config['section1']['key1']) # 打印指定节的指定键的值上述示例代码使用了Python的configparser库来读取Ini文件。
configparser模块提供了ConfigParser类,它提供了简洁而强大的方法来读取和写入Ini文件。
c使用inifile案例IniFile是一个用于处理INI文件的C库,它提供了一些函数来读取、写入和修改INI文件中的配置项。
INI文件是一种常见的配置文件格式,通常用于保存程序的配置信息。
以下是使用IniFile库进行INI 文件操作的一些示例:1. 创建INI文件并写入配置项```#include <stdio.h>#include <inifile.h>int main() {IniFile* ini = inifile_create("config.ini");inifile_set_string(ini, "Section1", "Key1", "Value1");inifile_set_int(ini, "Section1", "Key2", 123);inifile_set_double(ini, "Section2", "Key3", 3.14);inifile_save(ini);inifile_destroy(ini);return 0;}```2. 读取INI文件中的配置项```#include <stdio.h>#include <inifile.h>int main() {IniFile* ini = inifile_load("config.ini");char* value1 = inifile_get_string(ini, "Section1", "Key1", NULL); int value2 = inifile_get_int(ini, "Section1", "Key2", 0);double value3 = inifile_get_double(ini, "Section2", "Key3", 0.0); printf("Value1: %s\n", value1);printf("Value2: %d\n", value2);printf("Value3: %f\n", value3);inifile_destroy(ini);return 0;}```3. 修改INI文件中的配置项```#include <stdio.h>#include <inifile.h>int main() {IniFile* ini = inifile_load("config.ini");inifile_set_string(ini, "Section1", "Key1", "NewValue1");inifile_set_int(ini, "Section1", "Key2", 456);inifile_set_double(ini, "Section2", "Key3", 2.718); inifile_save(ini);inifile_destroy(ini);return 0;}```4. 删除INI文件中的配置项```#include <stdio.h>#include <inifile.h>int main() {IniFile* ini = inifile_load("config.ini");inifile_remove_key(ini, "Section1", "Key1");inifile_remove_key(ini, "Section1", "Key2");inifile_remove_key(ini, "Section2", "Key3");inifile_save(ini);inifile_destroy(ini);return 0;}```5. 遍历INI文件中的所有配置项```#include <stdio.h>#include <inifile.h>int main() {IniFile* ini = inifile_load("config.ini");IniSection* section = ini->sections;while (section != NULL) {printf("[%s]\n", section->name);IniItem* item = section->items;while (item != NULL) {printf("%s=%s\n", item->key, item->value);item = item->next;}section = section->next;}inifile_destroy(ini);return 0;}```这些示例展示了使用IniFile库进行INI文件操作的基本方法。
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文件中某个节下的所有键值对。
利用TIniFile操作标准ini文件使用TIniFile可以操作标准ini文件,以便于存取应用程序的配置信息。
一个ini文件以逻辑分组的形式存储信息,称为区(section),在每个section中,存储着键名(key)及其对应的键值(value)。
<keyname>=<value>使用【FileName】作为参数传递文件名给TIniFile的构造函数,来指定需要读写的ini文件。
由于ini文件格式尤其适用于跨平台应用程序(注册表仅适用于windwos平台配置信息),所以至今仍然非常流行,许多配置文件都使用该格式。
VCL/RTL提供两种类,TIniFile和TMemIniFile,用于方便的读写ini文件。
TIniFile直接操作硬盘ini文件,而TMemIniFile将所有变更先缓存在内存中,直到调用UpdateFile方法时,才将这些内容写入硬盘文件中。
当初始化TIniFile或者TMemIniFile对象时,需要将ini文件名以参数形式传递给构造函数。
如果该文件不存在,将会自动创建。
然后,就可以使用各种不同的读取方法自由的读取数值,例如:ReadString,ReadDate,ReadInteger或者ReadBool。
另外,如果你想要读取ini文件的整个section,你可以使用ReadSection方法。
同样的,你可以使用方法WriteBool,WriteInteger,WriteDate或WriteString写入数值。
每种读方法使用3个参数。
第一参数指定ini文件的section。
第二个参数指定你想要读取的值,第三个参数是默认值,以便当section或数值不存在时,写方法自动创建该section或值。
例:下面的代码创建一个ini文件(格式如下)。
[Form]Top=100Left=100Caption=Default CaptionInitMax=0该例程后续执行中,在窗体创建时读入数值,在OnClose事件中写回。
.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文件(即Initialization file),这种类型的文件中通常存放的是一个程序的初始化信息。
ini文件由若干个节(Section)组成,每个Section由若干键(Key)组成,每个Key可以赋相应的值。
读写ini文件实际上就是读写某个的Section中相应的Key的值,而这只要借助几个函数即可完成一、向ini文件中写入信息的函数1. 把信息写入系统的win.ini文件BOOL WriteProfileString(LPCTSTR lpAppName, // 节的名字,是一个以0结束的字符串LPCTSTR lpKeyName, // 键的名字,是一个以0结束的字符串。
若为NULL,则删除整个节LPCTSTR lpString // 键的值,是一个以0结束的字符串。
若为NULL,则删除对应的键)2. 把信息写入自己定义的.ini文件BOOL WritePrivateProfileString(LPCTSTR lpAppName, //节的名字,是一个以0结束的字符串LPCTSTR lpKeyName, // 键的名字,是一个以0结束的字符串。
若为NULL,则删除整个 LPCTSTR lpString, //键的名字,是一个以0结束的字符串。
若为NULL,则删除整个节LPCTSTR lpFileName // 要写入的文件的文件名。
若该ini文件与程序在同一个目录下,也可使用相对路径,否则需要给出绝对路径。
)如:::WriteProfileString("Test","id","xym");//在win.ini中创建一个Test节,并在该节中创建一个键id,其值为xym::WritePrivateProfileString("Test","id","xym","d:\vc\Ex1\ex1.ini");//在Ex1目录下的ex1.ini中创建一个Test节,并在该节中创建一个键id,其值为xym//若Ex1.ini文件与读写该文件的程序在同一个目录下,则上面语句也可写为:::WritePrivateProfileString("Test","id","xym",".\ex1.ini");需要注意的是,C系列的语言中,转义字符'\'表示反斜线''。
python ini文件操作例子```1. ini文件基本概念ini文件是一种配置文件,通常用于应用程序的设置和参数配置。
它是一种纯文本文件,可以使用配置项的形式存储数据。
配置项由键值对组成,每个配置项占用一行。
2. Python操作ini文件的方法Python中有多种操作ini文件的方法,这里我们介绍两种常用的库:`configparser`和`python-ini-parser」。
2.1 configparser库configparser是Python的标准库,用于处理ini文件。
下面是一个简单的例子:```pythonimport configparser#创建一个配置解析器对象config = configparser.ConfigParser()#读取ini文件config.read('example.ini')#获取配置项值section = 'example_section'key = 'example_key'value = config.get(section, key)print(f'{section}.{key}: {value}')#修改配置项值config.set(section, key, 'new_value')#写入ini文件with open('example.ini', 'w') as f:config.write(f)```2.2 python-ini-parser库python-ini-parser是一个轻量级的ini文件解析库,下面是一个简单的例子:```pythonfrom ini import Ini#创建一个Ini对象ini_file = 'example.ini'ini = Ini(ini_file)#获取配置项值section = 'example_section'key = 'example_key'value = ini.get(section, key)print(f'{section}.{key}: {value}')#修改配置项值ini.set(section, key, 'new_value')#写入ini文件ini.write(ini_file)```3.总结通过以上例子,我们可以看到Python操作ini文件的方法非常简单。
VB如何操作INI文件方法详解INI文件是Windows系统中常用的配置文件格式,用于存储程序的配置信息。
在VB中,可以通过读取和写入INI文件来操作和修改配置信息。
下面是详细的操作INI文件的方法:1.引入API函数:在VB中,需要使用一些API函数来实现对INI文件的读取和写入操作,因此我们需要在代码中引入这些函数。
在模块中添加以下代码:```vbPrivate Declare Function GetPrivateProfileString Lib"kernel32" Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As String, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String) As LongPrivate Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As String, ByVal lpString As String, ByVal lpFileName As String) As Long ```2.读取INI文件:读取INI文件的方法是使用GetPrivateProfileString函数,该函数有6个参数,分别对应应用程序名称、键名、默认值、返回的字符串、字符串长度和INI文件路径。
IniFile Ini操作分类:Delphi 2010-07-10 22:24 903人阅读评论(0) 收藏举报INI文件的结构如下[小节名]关键字=值uses IniFiles; {操作Ini文件需要引用TIniFile 的单元}常用的方法WriteString 写入字符串WriteInteger 写入数字WriteBool 写入布尔值ReadString 读取字符串值ReadInteger 读取数字ReadBool 读取布尔值ReadSections 读取小节列表ReadSection 读取某小节下关键字列表ReadSectionValues 读取某小节下所有内容列表,包括关键字和值写入view plaincopy to clipboardprint? .........10........20........30........40........50........60........70........80........90........100.......110.......120.......130.......140. (150)varF:TIniFile;beginF := TIniFile.Create('c:/A.ini'); //如果文件存在则打开,如果不存在,当向其中写入数据时,将创建ini文件F.WriteString('PersonInfo','姓名','张三');F.WriteInteger('PersonInfo','年龄',20);F.WriteBool('PersonInfo','婚否',False);end;varF:TIniFile;beginF := TIniFile.Create('c:/A.ini'); //如果文件存在则打开,如果不存在,当向其中写入数据时,将创建ini文件F.WriteString('PersonInfo','姓名','张三');F.WriteInteger('PersonInfo','年龄',20);F.WriteBool('PersonInfo','婚否',False);end;读取:读取方法的第三个参数表示,当读取失败时,返回的结果,view plaincopy to clipboardprint?varF:TIniFile;name:string;age:Integer;merry:Boolean;beginF := TIniFile.Create('c:/A.ini');name := F.ReadString('PersonInfo','姓名','无名氏'); //当读取失败时,返回'无名氏',否则返回读取的值age := F.ReadInteger('PersonInfo','年龄',20);merry := F.ReadBool('PersonInfo','婚否',False);end;varF:TIniFile;name:string;age:Integer;merry:Boolean;beginF := TIniFile.Create('c:/A.ini');name := F.ReadString('PersonInfo','姓名','无名氏'); //当读取失败时,返回'无名氏',否则返回读取的值age := F.ReadInteger('PersonInfo','年龄',20);merry := F.ReadBool('PersonInfo','婚否',False);end;读取小节的列表view plaincopy to clipboardprint?varF:TIniFile;List:TStringList;begintryList := TStringList.Create;F := TIniFile.Create('c:/A.ini');F.ReadSections(List); //将小节依次读取到List中ShowMessage(List.Text); //显示小节列表内容finallyList.Free;F.Free;end;end;varF:TIniFile;List:TStringList;begintryList := TStringList.Create;F := TIniFile.Create('c:/A.ini');F.ReadSections(List); //将小节依次读取到List中ShowMessage(List.Text); //显示小节列表内容finallyList.Free;F.Free;end;读取某小节下的关键字列表view plaincopy to clipboardprint?varF:TIniFile;List:TStringList;begintryList := TStringList.Create;F := TIniFile.Create('c:/A.ini');F.ReadSection('PersonInfo',List); //将小节依次读取到List中ShowMessage(List.Text); //显示'PersonInfo'小节下关键字列表内容finallyList.Free;F.Free;end;end;varF:TIniFile;List:TStringList;begintryList := TStringList.Create;F := TIniFile.Create('c:/A.ini');F.ReadSection('PersonInfo',List); //将小节依次读取到List中ShowMessage(List.Text); //显示'PersonInfo'小节下关键字列表内容finallyList.Free;F.Free;end;end;读取某小节下所有内容列表,包括关键字和值view plaincopy to clipboardprint?F:TIniFile;List:TStringList;begintryList := TStringList.Create;F := TIniFile.Create('c:/A.ini');F.ReadSectionValues('PersonInfo',List); //将小节依次读取到List中ShowMessage(List.Text); //读取某小节下所有内容列表,包括关键字和值finallyList.Free;F.Free;end;end;varF:TIniFile;List:TStringList;begintryList := TStringList.Create;F := TIniFile.Create('c:/A.ini');F.ReadSectionValues('PersonInfo',List); //将小节依次读取到List中ShowMessage(List.Text); //读取某小节下所有内容列表,包括关键字和值finallyList.Free;F.Free;end;end;其它常用方法EraseSection 删除某个小节DeleteKey 删除关键字SectionExists 判断某个章节是否存在ValueExists 判断某个小节下的某个关键字是否存在本文来自CSDN博客,转载请标明出处:/bdmh/archive/2009/05/04/4147104.aspx一、INI文件的结构:; 注释[小节名]关键字=值INI文件允许有多个小节,每个小节又允许有多个关键字,“=”后面是该关键字的值。
值的类型有三种:字符串、整型数值和布尔值。
其中字符串存贮在INI文件中时没有引号,布尔真值用1表示,布尔假值用0表示。
注释以分号“;”开头。
二、定义1、在Interface的Uses节增加IniFiles;2、在Var变量定义部分增加一行:myinifile:Tinifile;然后,就可以对变量myinifile进行创建、打开、读取、写入等操作了。
三、打开INI文件Filename:=ExtractFilePath(Paramstr(0))+’program.ini’;myinifile:=Tinifile.Create(filename);四、读取关键字的值针对INI文件支持的字符串、整型数值、布尔值三种数据类型,TINIfiles类提供了三种不同的对象方法来读取INI文件中关键字的值。
vs:=myinifile.Readstring(’小节名’,’关键字’,缺省值); string类型vi:=myinifile.Readinteger(’小节名’,’关键字’,缺省值);integer类型vb:=myinifile.Readbool(’小节名’,’关键字’,缺省值); boolean类型五、写入INI文件myinifile.writestring(’小节名’,’关键字’,变量或字符串值); string类型myinifile.writeinteger(’小节名’,’关键字’,变量或整型数值);integer类myinifile.writebool(’小节名’,’关键字’,变量或True或False);boolean类型当这个INI文件不存在时,上面的语句还会自动创建该INI文件。
六、删除关键字myinifile.DeleteKey(’小节名’,’关键字’);七、小节操作增加一个小节可用写入的方法来完成,删除一个小节可用下面的对象方法:myinifi le.EraseSection(’小节名’);另外Tinifile类还提供了三种对象方法来对小节进行操作:myinifile.readsection(’小节名’,TStrings变量);可将指定小节中的所有关键字名读取至一个字符串列表变量中;myinifile.readsections(TStrings变量);可将INI文件中所有小节名读取至一个字符串列表变量中去。