INI文件读写

合集下载

INI文件读写详解

INI文件读写详解
DWORD GetPrivateProfileString(
LPCTSTR lpAppName, // 同1(1)
LPCTSTR lpKeyName, // 同1(1)
LPCTSTR lpDefault, // 同1(1)
LPTSTR lpReturnedString, // 同1(1)
INI文件的读写详解
INI文件读写 文章指数:0 CSDN Blog推出文章指数概念,文章指数是对Blog文章综合评分后推算出的,综合评分项分别是该文章的点击量,回复次数,被网摘收录数量,文章长度和文章类型;满分100,每月更新一次。
int i; //i指向数组chSectionNames的某个位置,从0开始,顺序后移
int j=0; //j用来保存下一个节名字符串的首地址相对于当前i的位置偏移量
int count=0; //统计节的个数
//CString name;
//char id[20];
//在Ex1目录下的ex1.ini中创建一个Test节,并在该节中创建一个键id,其值为xym
//若Ex1.ini文件与读写该文件的程序在同一个目录下,则上面语句也可写为:
::WritePrivateProfileString("Test","id","xym",".\\ex1.ini");
::GetPrivateProfileSectionNames(chSectionNames,2048,".\\ex1.ini");
for(i=0;i<2048;i++,j++)

C#ini文件读写实例

C#ini文件读写实例

C#ini⽂件读写实例ini⽂件⼀般⽤于保存当前运⾏的程序或者⼀些临时的配置属性的⽂件。

也有时⽤于保存⼀定的数据以便于临时或者配置上的需要。

⽂本格式如下:[Section1 Name] ---------⽤ []括起来,其包含多个keyKeyName1=value1 ------格式是 Key=value。

KeyName2=value2...[Section2 Name]KeyName1=value1KeyName2=value2其中有专门读写ini⽂件的windows⽅法:[DllImport("kernel32")]// 写⼊ini⽂件操作section,key,valueprivate static extern long WritePrivateProfileString(string section,string key, string val, string filePath);[DllImport("kernel32")]// 读取ini⽂件操作section,key,和返回的keyvalueprivate static extern int GetPrivateProfileString(string section,string key, string def, StringBuilder retVal,int size, string filePath);C#操作时代码如下:using System;using System.Collections.Generic;using ponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;using System.IO;using System.Runtime.InteropServices;//using System.Collections;//using System.Collections.Specialized;namespace iniTest1{public partial class Form1 : Form{[DllImport("kernel32")]// 写⼊ini⽂件操作section,key,valueprivate static extern long WritePrivateProfileString(string section, string key, string val, string filePath);[DllImport("kernel32")]// 读取ini⽂件操作section,key,和返回的keyvalueprivate static extern int GetPrivateProfileString(string section, string key, string def, StringBuilder retVal, int size, string filePath);public Form1(){InitializeComponent();}private void button1_Click(object sender, EventArgs e){try{openFileDialog1.ShowDialog();textBox1.Text = openFileDialog1.FileName;}catch (Exception ex){MessageBox.Show(ex.Message);}}private void button2_Click(object sender, EventArgs e){string FileName = textBox1.Text;string section = textBox2.Text;string key = textBox3.Text;string keyValue = textBox4.Text;try{//写⼊ini⽂件属性WritePrivateProfileString(section, key, keyValue, FileName);MessageBox.Show("成功写⼊INI⽂件!", "信息");}catch (Exception ex){MessageBox.Show(ex.Message);}}private void button3_Click(object sender, EventArgs e){StringBuilder temp = new StringBuilder(255);string FileName = textBox1.Text;string section = textBox2.Text;string key = textBox3.Text;//读取ini⽂件属性值---赋予当前属性上tempint i = GetPrivateProfileString(section, key, "⽆法读取对应数值!", temp, 255, FileName);//显⽰读取的数值textBox4.Text = temp.ToString();}}}。

C#读写ini文件详解

C#读写ini文件详解
private static extern int GetPrivateProfileString (
string section ,
string key , string def , StringBuilder retVal ,
int size , string filePath ) ;
}
}
C#读写ini文件的相关内容就向你介绍到这里,希望对你了解和学习C#读写ini文件有所帮助。�
我现在介绍的是系统处理INI的方法.
虽然C#中没有,但是在"kernel32.dll"这个文件中有Win32的API函数--WritePrivateProfileString()和GetPrivateProfileString()
C#读写ini文件实现之C#声明INI文件的写操作函数WritePrivateProfileString():
/// 读出INI文件
/// ﹤/summary﹥
/// ﹤param name="Section"﹥项目名称(如 [TypeName] )﹤/param﹥
/// ﹤param name="Key"﹥键﹤/param﹥
public string IniReadValue(string Section,string Key)
/// ﹤summary﹥
/// 构造方法
/// ﹤/summary﹥
/// ﹤param name="INIPath"﹥文件路径﹤/param﹥
public INIClass(string INIPath)
{
inipath = INIPath;

C语言读取写入ini配置文件的方法实现

C语言读取写入ini配置文件的方法实现

C语⾔读取写⼊ini配置⽂件的⽅法实现⽬录⼀、了解什么是INI⽂件?⼆、INI⽂件的格式三、解析上述⽂件四、测试如下⼀、了解什么是INI⽂件?ini ⽂件是Initialization File的缩写,即初始化⽂件,这是⽤来配置应⽤软件以实现不同⽤户的要求。

⼆、INI⽂件的格式INI⽂件由节、键、值组成。

⼀个简单的的INI⽂件例⼦如下:[Setting]INIT_FLAG=0;VOLUME=1;LANGUAGE=1;如上例⼦,[Setting]就是节,=号左边的值是键,=号右边的是值。

三、解析上述⽂件/*ini.h*/#ifndef INI_H#define INI_H#include <stdio.h>#include <string.h>int GetIniKeyString(char *title,char *key,char *filename,char *buf);int PutIniKeyString(char *title,char *key,char *val,char *filename);#endif /*INI_H*//*ini.c*/#include <stdio.h>#include <string.h>/** 函数名: GetIniKeyString* ⼊⼝参数: title* 配置⽂件中⼀组数据的标识* key* 这组数据中要读出的值的标识* filename* 要读取的⽂件路径* 返回值:找到需要查的值则返回正确结果 0* 否则返回-1*/int GetIniKeyString(char *title,char *key,char *filename,char *buf){FILE *fp;int flag = 0;char sTitle[64], *wTmp;char sLine[1024];sprintf(sTitle, "[%s]", title);if(NULL == (fp = fopen(filename, "r"))) {perror("fopen");return -1;}while (NULL != fgets(sLine, 1024, fp)) {// 这是注释⾏if (0 == strncmp("//", sLine, 2)) continue;if ('#' == sLine[0]) continue;wTmp = strchr(sLine, '=');if ((NULL != wTmp) && (1 == flag)) {if (0 == strncmp(key, sLine, strlen(key))) { // 长度依⽂件读取的为准sLine[strlen(sLine) - 1] = '\0';fclose(fp);while(*(wTmp + 1) == ' '){wTmp++;}strcpy(buf,wTmp + 1);return 0;}} else {if (0 == strncmp(sTitle, sLine, strlen(sTitle))) { // 长度依⽂件读取的为准flag = 1; // 找到标题位置}}}fclose(fp);return -1;}/** 函数名: PutIniKeyString* ⼊⼝参数: title* 配置⽂件中⼀组数据的标识* key* 这组数据中要读出的值的标识* val* 更改后的值* filename* 要读取的⽂件路径* 返回值:成功返回 0* 否则返回 -1*/int PutIniKeyString(char *title,char *key,char *val,char *filename){FILE *fpr, *fpw;int flag = 0;char sLine[1024], sTitle[32], *wTmp;sprintf(sTitle, "[%s]", title);if (NULL == (fpr = fopen(filename, "r")))return -1;// 读取原⽂件sprintf(sLine, "%s.tmp", filename);if (NULL == (fpw = fopen(sLine, "w")))return -1;// 写⼊临时⽂件while (NULL != fgets(sLine, 1024, fpr)) {if (2 != flag) { // 如果找到要修改的那⼀⾏,则不会执⾏内部的操作wTmp = strchr(sLine, '=');if ((NULL != wTmp) && (1 == flag)) {if (0 == strncmp(key, sLine, strlen(key))) { // 长度依⽂件读取的为准flag = 2;// 更改值,⽅便写⼊⽂件sprintf(wTmp + 1, " %s\n", val);}} else {if (0 == strncmp(sTitle, sLine, strlen(sTitle))) { // 长度依⽂件读取的为准flag = 1; // 找到标题位置}}}fputs(sLine, fpw); // 写⼊临时⽂件}fclose(fpr);fclose(fpw);sprintf(sLine, "%s.tmp", filename);return rename(sLine, filename);// 将临时⽂件更新到原⽂件}上述两个函数是简单的解析函数,因为ini⽂件有很多种解析⽅式,根据不同的需求解析也不同所以要进⾏修改⽐如我的注释符号是 “ ;”,所以我需要修改并且根据实际功能需求也可以进⾏进⼀步的封装四、测试如下ini样本⽂件/*test.ini*/[city]beijing = hello-beijingshanghai = hello-shanghai#information[study]highschool = xxxxuniversity = yyyytest.c程序/*test.c*/#include "ini.h"#include <stdio.h>int main(int argc, char const *argv[]){char buff[100];int ret;ret = GetIniKeyString("city","beijing","./test.ini",buff);printf("ret:%d,%s\n",ret,buff);ret = GetIniKeyString("study","highschool","./test.ini",buff);printf("ret:%d,%s\n",ret,buff);ret = PutIniKeyString("study","highschool","zzzz","./test.ini");printf("put ret:%d\n",ret);ret = GetIniKeyString("study","highschool","./test.ini",buff);printf("ret:%d,%s\n",ret,buff);return 0;}结果如下:ret:0,hello-beijingret:0,xxxxput ret:0ret:0,zzzz相应的test.ini的study段highschool项变成了zzzz.这⾥还要注意,section使⽤中⽂字符可能会⽆法识别!到此这篇关于C语⾔读取写⼊ini配置⽂件的⽅法实现的⽂章就介绍到这了,更多相关C语⾔读取写⼊ini 内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!。

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()。

QT中如何读写ini配置文件

QT中如何读写ini配置文件

QT中如何读写ini配置⽂件如图1所⽰,我们需要在QT界⾯中实现⼿动读取参数存放的位置,那么我们该如何做呢?⽅法:读取ini格式的配置⽂件,实现路径的写⼊与读取。

第⼀步:界⾯构造函数中,初始化⼀个Config.ini⽂件//初始化⼀个.ini配置⽂件//qApp是QT系统⾃带的,可以直接使⽤QString iniFilePath=qApp-&gt;applicationDirPath()+"/Config.ini";//如果不存在Config.ini,便⽣成⼀个Config.ini。

如果已经存在了,则略过。

if(!QFile::exists(iniFilePath)){QSettings configIniWrite(iniFilePath,QSettings::IniFormat);configIniWrite.beginGroup("calib_data_path");configIniWrite.setValue("calib_data_path","FA0180090134.xml");configIniWrite.endGroup();configIniWrite.beginGroup("robot_pose_file");configIniWrite.setValue("robot_pose_file_path","robot_pose_file.txt");configIniWrite.endGroup();}第⼆步:定义⼀个保存Config⽂件的函数void saveConfig(const QString& group,const QString& name, const QVariant& var){QString iniFilePath = qApp-&gt;applicationDirPath() + "/Config.ini";if (QFile::exists(iniFilePath)){QSettings configIniWrite(iniFilePath,QSettings::IniFormat);configIniWrite.beginGroup(group);configIniWrite.setValue(name,var);configIniWrite.endGroup();}}第三步:设置路径Demo1://设置相机标定⽂件路径void CalibrationForm::btnLoadCamParaPath_clicked(){QFileDialog dialog(this,tr("Select calib data file"));dialog.setAcceptMode(QFileDialog::AcceptOpen);dialog.setFileMode(QFileDialog::ExistingFile);static bool firstDialog = true;if (firstDialog){firstDialog = false;const QStringList fileLocations =QStandardPaths::standardLocations(QStandardPaths::DesktopLocation);dialog.setDirectory(fileLocations.isEmpty() ?QDir::currentPath():st());}dialog.setNameFilter(tr("FA0180090134(*.xml)"));if (dialog.exec()==QDialog::Accepted){//获得⽂件夹路径+⽂件名_campara_path = dialog.selectedFiles().first();ui-&gt;lineEditCamParaPath-&gt;setText(_campara_path); //此处是在lineEdit窗⼝显⽰路径名+⽂件名saveConfig("calib_data_path","calib_data_path",_campara_path);}}demo2://设置⼿眼标定时的机械臂运动轨迹路径void CalibrationForm::btnLoadRobotPara_clicked(){QFileDialog dialog(this,tr("Select robot pose file"));dialog.setAcceptMode(QFileDialog::AcceptOpen);dialog.setFileMode(QFileDialog::ExistingFile);static bool first_Dialog = true;if (first_Dialog){first_Dialog = false;const QStringList fileLocations =QStandardPaths::standardLocations(QStandardPaths::DesktopLocation);dialog.setDirectory(fileLocations.isEmpty()?QDir::currentPath():st());}dialog.setNameFilter(tr("robot_pose_file(*.txt)"));if (dialog.exec()==QDialog::Accepted){_robot_pose_path = dialog.selectedFiles().first();ui-&gt;lineEditRobotPath-&gt;setText(_robot_pose_path);saveConfig("robot_pose_file","robot_pose_file_path",_robot_pose_path);}}由于ini⽂件不可在星球中上传,此处⽤txt形式的截图作为附件,见图2.到此这篇关于QT中如何读写ini配置⽂件的⽂章就介绍到这了,更多相关QT读写ini内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!。

CC++关于如何读写ini配置文件(小结)

CC++关于如何读写ini配置文件(小结)

CC++关于如何读写ini配置⽂件(⼩结)我们可能经常⽤到配置⽂件ini⽂件来获取或者保存参数信息,在VC中其函数中主要⽤到的有:读取1. 读取字符DWORD GetPrivateProfileString(LPCTSTR lpAppName, // INI⽂件中的⼀个字段名[节名]可以有很多个节名LPCTSTR lpKeyName, // lpAppName 下的⼀个键名,也就是⾥⾯具体的变量名LPCTSTR lpDefault, // 如果lpReturnedString为空,则把个变量赋给lpReturnedStringLPTSTR lpReturnedString, // 存放键值的指针变量,⽤于接收INI⽂件中键值(数据)的接收缓冲区DWORD nSize, // lpReturnedString的缓冲区⼤⼩LPCTSTR lpFileName // INI⽂件的路径);2. 读取整型值 (返回值为读到的整)UINT GetPrivateProfileInt(LPCTSTR lpAppName, // INI⽂件中的⼀个字段名[节名]可以有很多个节名LPCTSTR lpKeyName, // lpAppName 下的⼀个键名,也就是⾥⾯具体的变量名INT nDefault, // 如果没有找到指定的数据返回,则把个变量值赋给返回值LPCTSTR lpFileName // INI⽂件的路径);写⼊1. 写⼊字符BOOL WritePrivateProfileString(LPCTSTR lpAppName, // INI⽂件中的⼀个字段名[节名]可以有很多个节名LPCTSTR lpKeyName, // lpAppName 下的⼀个键名,也就是⾥⾯具体的变量名LPCTSTR lpString, // 键值,也就是数据LPCTSTR lpFileName // INI⽂件的路径);2. 写⼊整型读写INI⽂件时相对路径和绝对路径都可以,根据实际情况选择 "..\\IniFileName.ini" // 这样的为相对路径 "D:\\IniFileName.ini" // 这样的为绝对路径MAX_PATH:是微软最⼤路径占的字节所设的宏 写⼊的ini⽂件分为:节、键名、键值 举个栗⼦: // XX.ini [串⼝配置] 波特率=19200有了理论,再看看实践的demo:写INI⽂件:LPTSTR lpPath = new char[MAX_PATH];strcpy(lpPath, "D:\\IniFileName.ini");WritePrivateProfileString("LiMing", "Sex", "Man", lpPath);WritePrivateProfileString("LiMing", "Age", "20", lpPath);WritePrivateProfileString("Fangfang", "Sex", "Woman", lpPath);WritePrivateProfileString("Fangfang", "Age", "21", lpPath);delete [] lpPath;INI⽂件如下:[LiMing]Sex=ManAge=20[Fangfang]Sex=WomanAge=21读INI⽂件:TCHAR FPath[128];::GetCurrentDirectory(MAX_PATH, FPath);strcat(FPath, ".\\Config.ini");CFile ConfigFile;if(!ConfigFile.Open(FPath, CFile::modeCreate||CFile::modeRead, NULL)){AfxMessageBox("打开Config.ini配置⽂件失败!!!");return FALSE;}ConfigFile.Close();LPTSTR lpPath = new char[MAX_PATH];LPTSTR LiMingSex = new char[6];int LiMingAge;LPTSTR FangfangSex = new char[6];int FangfangAge;strcpy(lpPath, "..\\IniFileName.ini");GetPrivateProfileString("LiMing", "Sex", "", LiMingSex, 6, lpPath);LiMingAge = GetPrivateProfileInt("LiMing", "Age", 0, lpPath);GetPrivateProfileString("Fangfang", "Sex", "", FangfangSex, 6, lpPath);FangfangAge = GetPrivateProfileInt("Fangfang", "Age", 0, lpPath);delete [] lpPath;配置⽂件中经常⽤到ini⽂件,在VC中其函数分别为:写⼊.ini⽂件:bool WritePrivateProfileString(LPCTSTR lpAppName,LPCTSTR lpKeyName,LPCTSTR lpString,LPCTSTR lpFileName);读取.ini⽂件:DWORD GetPrivateProfileString(LPCTSTR lpAppName,LPCTSTR lpKeyName,LPCTSTR lpDefaut,LPSTR lpReturnedString,DWORD nSize,LPCTSTR lpFileName);读取整形值:UINT GetPrivateProfileInt(LPCTSTR lpAppName,LPCTSTR lpKeyName,INT nDefault,LPCTSTR lpFileName);其中个参数的意思:LPCTSTR lpAppName ------- INI⽂件中的⼀个字段名LPCTSTR lpKeyName -------- lpAppName 下的⼀个键名,也就是⾥⾯具体的变量名LPCTSTR lpString ---------是键值,也就是变量的值,必须为LPCTSTR或CString类型LPCTSTR lpFileName --------完整的INI⽂件路径名LPCTSTR lpDefaut ----------如果没有其前两个参数值,则将此值赋给变量LPSTR lpReturnedString --------接收INI⽂件中的值的CString对象,即接收缓冲区DWORD nSize ------接收缓冲区的⼤⼩例⼦:CString StrName,Strtemp;int nAge;StrName = "jacky";nAge = 13;WritePrivateProfileString("Student","Name",StrName,"c:\\setting.ini");结果:(INI⽂件中显⽰如下:)[Student]Name=jacky读取:CString SName;GetPrivateProfileString("Student","Name","DefaultName",SName.GetBuffer(MAX_LENGTH),MAX_LENGTH,"c:\\setting.ini");结果:SName = "jacky";这⾥需要注意点就是⽤完GetBuffer函数后⼀定要释放(⽤SName.ReleaseBuffer()函数),不然后⾯再⽤到SName 的其他⼦函数就会失灵。

python简单读写ini文件

python简单读写ini文件

python简单读写ini⽂件1、创建ini⽂件2、认识configparse类中基础⽅法cfg_obj = configparser.ConfigParser() #创建对象cfg_obj.read(conf_file_path) #读取配置⽂件sections = cfg_obj.sections()#获取配置⽂件中所有的section节点options = cfg_obj.options("default")#获取对应节点下的所有keyfor sec in sections:print(cfg_obj.options(sec))#可使⽤for循环获取ini⽂件中各个节点下的key值value = cfg_obj.get("default","path") #获取对应的valuecfg_obj.set("default","path111","value1111") #设置key和value到ini⽂件cfg_obj.add_section("default") #增加section到⽂件cfg_obj.remove_section("default") #移除section节点数据cfg_obj.remove_option("default","patha") #移除节点下的optionconfig_file_obj = open( conf_file_path,"w") #创建ini⽂件对象cfg_obj.write(config_file_obj) #写⼊⽂件judge_value_is_exist = cfg_obj.has_section("default") #判断section节点是否存在judge_value_is_exist2 = cfg_obj.has_option("default","path")#判断节点下的key是否存在3、封装,创建⼀个读取ini⽂件的⼯具类1)创建初始化函数class ConfigUtils:def __init__(self,config_file_path):self.cfg_path = config_file_pathself.cfg =configparser.ConfigParser()self.cfg.read(self.cfg_path)2)创建读取配置⽂件值的⽅法def read_value(self,section,key):value = self.cfg.get(section,key)return value3)创建写⼊配置⽂件的⽅法def write_value(self,section,key,value):self.cfg.set( section,key,value )config_file_obj = open( self.cfg_path , "w")self.cfg.write(config_file_obj)config_file_obj.flush()config_file_obj.close()cfg_obj.set("default","path111","value1111")。

C#操作ini(读取、写入)

C#操作ini(读取、写入)

C#操作ini(读取、写⼊)C#操作ini(读取、写⼊)INI⽂件是⼀种按照特点⽅式排列的⽂本⽂件,该⽂件主要存放⽤户所做的选择以及系统的各种参数。

⽤户可以通过修改INI⽂件,来改变应⽤程序和系统的很多配置。

但⾃从Windows 95的退出,在Windows系统中引⼊了注册表的概念,INI⽂件在Windows系统的地位就开始不断下滑,这是因为注册表的独特优点,使应⽤程序和系统都把许多参数和初始化信息放进了注册表中。

但在某些场合,INI⽂件还拥有其不可替代的地位。

INI⽂件的结构INI⽂件是⼀种按照特点⽅式排列的⽂本⽂件。

每⼀个INI⽂件构成都⾮常类似,由若⼲段落(section)组成,在每个带括号的标题下⾯,是若⼲个以单个单词开头的关键词(keyword)和⼀个等号,等号右边的就是关键字对应的值(value)。

其⼀般形式如下:[Section1] KeyWord1 = Valuel KeyWord2 = Value2 ...... [Section2] KeyWord3 = Value3 KeyWord4 = Value4[DllImport("kernel32")]private static extern int GetPrivateProfileString(string section, string key, string defVal, StringBuilder retVal, int size, string filePath);注:section:要读取的段落名key: 要读取的键defVal: 读取异常的情况下的缺省值retVal: key所对应的值,如果该key不存在则返回空值size: 值允许的⼤⼩filePath: INI⽂件的完整路径和⽂件名[DllImport("kernel32")]private static extern long WritePrivateProfileString(string section, string key, string val, string filePath);注:section: 要写⼊的段落名key: 要写⼊的键,如果该key存在则覆盖写⼊val: key所对应的值filePath: INI⽂件的完整路径和⽂件名/// <summary>/// 读取INI⽂件/// </summary>/// <param name="section">项⽬名称(如 [section] )</param>/// <param name="skey">键</param>/// <param name="path">路径</param>public string IniReadValue(string section, string skey, string path){StringBuilder temp = new StringBuilder(500);int i = GetPrivateProfileString(section, skey, "", temp, 500, path);return temp.ToString();}/// <summary>/// 写⼊ini⽂件/// </summary>/// <param name="section">项⽬名称</param>/// <param name="key">键</param>/// <param name="value">值</param>/// <param name="path">路径</param>public void IniWrite(string section, string key, string value,string path) {WritePrivateProfileString(section, key, value, path); }测试://创建⼀个test.ini⽂件并在A段落写⼊姓名(key)=wlj(value)IniWrite("A","姓名","wlj","f:/test.ini")IniWrite("B","姓名","WZQ","f:/test.ini")test.ini⽂件的格式:ini模版:[A]姓名=wlj[B]姓名=WZQ//读取test.ini⽂件中A 段落键=姓名的值IniReadValue("A","姓名","f:/test.ini")//读取test.ini⽂件中A 段落中所有值IniReadValue("A",null,"f:/test.ini")//删除test.ini⽂件中A 段落中所有键(没有键,也就没有值了)IniWrite("A",null,null,"f:/test.ini")//删除test.ini⽂件中所有段落IniWrite(null,null,null,"f:/test.ini")。

C#利用动态库DllImport(kernel32)读写ini文件

C#利用动态库DllImport(kernel32)读写ini文件

C#利⽤动态库DllImport(kernel32)读写ini⽂件1 ini⽂件读写kernel32.dll是Windows中⾮常重要的32位动态链接库⽂件,属于内核级⽂件。

它控制着系统的内存管理、数据的输⼊输出操作和中断处理,当Windows启动时,kernel32.dll就驻留在内存中特定的写保护区域,使别的程序⽆法占⽤这个内存区域。

为什么要来讨论读写ini⽂件呢,难道有数据库我们就不⽤读写⽂件了吗,什么数据都从数据库读取出来吗,有些东西是根据客户的习惯,就没必要去读取数据库了,或者说,⽐如你要做⼀个记住密码的功能,如果在web端,你还可以⽤cookie这东西,但是要是winform 呢,这时候ini⽂件就可以派上⽤场了。

我们可以把⽤户和密码存在ini⽂件⾥。

注意事项:ini⽂件路径必须完整可将ini放在程序所在⽬录,此时IpFileName参数为“.\FileName.ini”2 ⽅法(1) GetPrivateProfileInt :使⽤该⽅法可获取ini类型数据,未获取到时则会取设置的默认数据UINT WINAPI GetPrivateProfileInt(_In_LPCTSTR lpAppName, //ini⽂件中区块名称_In_LPCTSTR lpKeyName, //键名_In_INT nDefault, //默认值_In_LPCTSTR lpFileName //ini⽂件路径);(2) GetPrivateProfileString:使⽤该⽅法可获取string类型数据,未获取到时则会取设置的默认数据UINT WINAPI GetPrivateProfileString(_In_LPCTSTR lpAppName, //ini⽂件中区块名称_In_LPCTSTR lpKeyName, //键名_In_INT nDefault, //默认值_In_LPSTR lpReturnedString,//接受ini⽂件中值的CString对象,指定⼀个字符串缓冲区,长度⾄少为nSize_In_DWORD nSize,//指定装载到IpReturnedString缓冲区的最⼤字符数_In_LPCTSTR lpFileName //ini⽂件路径);(3) WritePrivateProfileString:向ini中写值,所以仅有写⼊string就⾜够了BOOL WritePrivateProfileString(LPCTSTR lpAppName,//ini⽂件中区块名LPCTSTR lpKeyName,//键名LPCTSTR lpString,//键值LPCTSTR lpFileName);3 例⼦using System.IO;using System.Runtime.InteropServices;using System.Text;using System.Windows;namespace WpfApplication3{///<summary>/// MainWindow.xaml 的交互逻辑///</summary>public partial class MainWindow : Window{public MainWindow(){InitializeComponent();IniClass ini = new IniClass();string IniPath = System.Windows.Forms.Application.StartupPath + "\\temp.ini";//引⽤⾥添加form才可以string section = "BigBang";ini.SetPath(IniPath);ini.IniWriteValue(section, "1", "Amy");ini.IniWriteValue(section, "2", "Sheldon");string section1 = "Family";ini.SetPath(IniPath);ini.IniWriteValue(section1, "1", "Phil");ini.IniWriteValue(section1, "2", "Jay");string re = ini.IniReadValue(section, "1");System.Windows.MessageBox.Show(re);}}public class IniClass{[DllImport("kernel32")]private static extern long WritePrivateProfileString(string section, string key,string value, string filepath);[DllImport("kernel32")]private static extern long GetPrivateProfileString(string section, string key,string def, StringBuilder retVal, int size, string filePath);private string iniPath;public void SetPath(string iniPath){this.iniPath = iniPath;}public void IniWriteValue(string section, string key, string value){WritePrivateProfileString(section, key, value, this.iniPath);}public string IniReadValue(string section, string key){StringBuilder temp = new StringBuilder(500);GetPrivateProfileString(section, key, "", temp, 500, iniPath);return temp.ToString();}public bool ExistFile(){return File.Exists(this.iniPath);}}}注意:WPF中引⼊WindowsForms控件的⽅法为:引⽤添加System.Windows.Forms.Integration与System.Windows.Forms;。

C#如何实现完整的INI文件读写类

C#如何实现完整的INI文件读写类

C#如何实现完整的INI⽂件读写类作者: 魔法软糖⽇期: 2020-02-27引⾔*************************************.ini ⽂件是Initialization File的缩写,即配置⽂件。

是的系统所采⽤的存储格式。

它具有⽅便易⽤的特点,和注册表的键值有着类似的功能,各类应⽤程序也经常使⽤INI保存各种配置和选项。

在简单只需要读取的场合,调⽤WINDOWS API就⾏,但在复杂的需要可视化编辑时,就需要建⽴⾃⼰的处理类了。

如何实现⾃⼰的INI类⾸先我们需要了解◇ INI的格式◇典型INI⽂件;项⽬注释[.ShellClassInfo]InfoTip=有图标的⽂件夹;图标资源IconResource="C:\Windows\system32\SHELL32.dll",4#⽂件夹视图[ViewState]Mode=Vid=FolderType=General#尾部注释⼀个典型INI⽂件由节、注释和节下⾯的项组成,⽽项为键=值的形式。

INI⽂件的注释符号有两种,规范为;分号,实际有些地⽅⽤#井号。

◇保留注释为了在修改INI⽂件时不丢失任何信息,所以需要保存INI⽂件中所有有效元素、包括注释甚⾄是⽆效⾏。

为了实现这个⽬的,将所有注释和⽆效⾏都归属于它之后的有效元素。

以上⾯的desktop.ini为例,第⼀⾏ ;项⽬注释归属于[.ShellClassInfo]节第四⾏;图标资源归属于IconResource=项#⽂件夹视图归属于[ViewState]节最后的#尾部注释归属于整个INI⽂档的EndText◇ INIItem类表⽰INI⽂件中节点下⾯的项,它拥有三个属性:名称Name、值Value和注释Comment1///<summary>2///拥有名称、值和注释3///</summary>4public class INIItem {5///<summary>6///实例化INIItem。

ini文件读写解决方案

ini文件读写解决方案

ini文件读写解决方案篇一:ini配置文件的读写ini配置文件的读写很多时候,我们的程序运行前需要用户做一些相关的设置,而且我们总是需要把一些配置信息保存下来,那天一直在思考怎么解决这个问题,突然就想到了在一些软件安装目录下的ini文件,然后经过查找资料发现其实ini文件既方便又实用。

下面对其使用进行总结:一、将信息从ini文件中读取到变量中首先,看一个ini文件的示例。

[连接参数]IpServer=DataBase=DB_TESTUserID=testPassword=123456;注释用英文分号以上就是一个简单的配置文档。

读取信息所用的函数为DWORD GetPrivateProfileString(LPCTSTR lpAppName, // section nameLPCTSTR lpKeyName, // key nameLPCTSTR lpDefault, // default stringLPTSTR lpReturnedString, // destination buffer DWORD nSize, // size of destination bufferLPCTSTR lpFileName // initialization file name );第一个参数为字段名,上例中的[连接参数];第二个参数键名,即变量名,上例中的IpServer、DataBase等等;第三个参数指,如果ini文件中没有前两个参数指定的字段名或键名,则将lpDefault的值赋给变量,也就是缺省值;第四个参数是接收ini文件中键名的值的CString对象,即目的缓存器;第五个参数是目的缓存器的大小;第六个参数是ini文件的完整路径。

如下:GetPrivateProfileString(L"连接参数",L"ipServer",L"", (MAX_PATH),MAX_PATH,curPath);在此额外说一点,一般来说ini文件和exe文件是放在一起的,所以这里涉及到当前路径的问题,该问题在《如何获取EXE可执行文件的所在路径》一文中讲得很清楚,而在此我用另一个全局函数也可以实现,假如我们的文件是配置.ini,则如下:CString curPath;//存储路径的CString对象AfxGetModuleFileName(AfxGetInstanceHandle(),curPath );curPath=(('\\'))+'\\';(L"配置.ini");或者还可以使lpFileName的值为:“.//配置.ini”来定位到当前目录(这种方法笔者还未测试)。

net 6 ini文件的读写方法

net 6 ini文件的读写方法

net 6 ini文件的读写方法在.NET 6中,INI文件可以通过使用``命名空间中的类进行读写。

以下是一个简单的示例,演示如何读取和写入INI文件:首先,确保你的项目已经安装了``和``这两个NuGet包。

1. 读取INI文件:```csharpusing ;using ;class Program{static void Main(string[] args){IConfiguration config = new ConfigurationBuilder().AddIniFile("") // 指定INI文件路径.Build();string settingValue = config["section:key"]; // 读取section下的key值(settingValue);}}```在上面的代码中,我们使用了`ConfigurationBuilder`来构建配置,并添加了INI文件。

然后,通过键(section:key)来获取配置值。

2. 写入INI文件:为了写入INI文件,你需要先创建一个`IConfiguration`实例,然后使用`Save`方法保存配置。

这里有一个示例:```csharpusing ;using ;using ;using ;class Program{static void Main(string[] args){IConfiguration config = new ConfigurationBuilder().AddIniFile("", optional: true) // 指定INI文件路径,可选参数默认为false,设置为true则不会抛出异常当文件不存在时。

.Build();("", optional: true); // 可以同时从多个源加载配置,这里再添加一个JSON配置文件。

Qt读写配置文件(.ini)

Qt读写配置文件(.ini)

Qt读写配置⽂件(.ini)(转载)INIINI⽂件格式是某些平台或软件上的配置⽂件的⾮正式标准,以节(section)和键(key)构成,常⽤于微软Windows操作系统中。

INI⽂件是Initialization File的缩写,即初始化⽂件。

除了windows现在很多其他操作系统下⾯的应⽤软件也有.ini⽂件,⽤来配置应⽤软件以实现不同⽤户的要求。

⼀般不⽤直接编辑这些.ini⽂件,应⽤程序的图形界⾯即可操作以实现相同的功能。

INI⽂件被⽤来对操作系统或特定程序初始化或进⾏参数设置。

⽂件格式节(section)节⽤⽅括号括起来,单独占⼀⾏,例如:[section]键(key)键(key)⼜名属性(property),单独占⼀⾏⽤等号连接键名和键值,例如:name=valueQT读写INI⽂件Qt4.0⼀个⾮常有⽤的类QSettings,在windows平台,它提供了ini⽂件读写,注册表读写的功能。

⽽且使⽤也⾮常简单。

QSettings::Format有两种:QSettings::NativeFormat在windows平台可以读写windows注册表;QSettings::IniFormat可以读写ini格式的配置⽂件。

今天给⼤家介绍下⼀种简单的配置⽂件ini的读写,⼀句话:简单1、#include <QSettings>2、ini⽂件书写格式:[DevOption]mainFun=25subFun=40service=13、读写ini⽂件1 //qt写⼊ini配置⽂件2 QSettings settings("Option.ini",QSettings::IniFormat);3 settings.beginGroup("DevOption");4 settings.setValue("mainFun",25);5 settings.setValue("subFun",40);6 settings.setValue("service",1);7 settings.endGroup();8 //读取ini9 QSettings settingsread("Option.ini",QSettings::IniFormat);10 int mainFun = settingsread.value("DevOption/mainFun").toInt();11 QString service = settingsread.value("DevOption/service").toString();4、这种.ini配置⽂件书写简单易懂,也易于操作,也是⽐较常见的配置⽂件。

bat读写ini文件的函数

bat读写ini文件的函数

bat读写ini文件的函数BAT脚本可以通过读写INI文件来记录和获取配置信息。

INI文件是一种常见的配置文件格式,在Windows系统中被广泛应用。

读取INI文件的函数:```setlocal EnableDelayedExpansionset 'INI_FILE=config.ini'set 'SECTION=[Section1]'set 'KEY=Key1'for /F 'usebackq delims=' %%a in ('%INI_FILE%') do ( set 'LINE=%%a'REM 去掉行首尾的空格和制表符set 'LINE=!LINE: =!'set 'LINE=!LINE: =!'set 'LINE=!LINE: =!'REM 如果是[section]行,则判断是否是要读取的sectionif '!LINE:~0,1!'=='[' (set 'CUR_SECTION=!LINE!'set 'CUR_SECTION=!CUR_SECTION:[=!'set 'CUR_SECTION=!CUR_SECTION:]=!'if '!CUR_SECTION!'=='!SECTION!' (set 'IN_SECTION=true') else (set 'IN_SECTION=false')) else (REM 不是[section]行,如果在要读取的section内,则判断是否是要读取的keyif '!IN_SECTION!'=='true' (for /F 'tokens=1,* delims==' %%b in ('!LINE!') do (set 'CUR_KEY=%%b'set 'CUR_VALUE=%%c'REM 去掉key和value的空格set 'CUR_KEY=!CUR_KEY: =!'set 'CUR_VALUE=!CUR_VALUE: =!'if '!CUR_KEY!'=='!KEY!' (echo !CUR_VALUE!)))))```该函数将INI文件中`[Section1]`内`Key1`的值打印出来。

Python读写ini文件

Python读写ini文件

Python读写ini⽂件⽐如有⼀个⽂件update.ini,⾥⾯有这些内容:1 2 3 4 5 6 7 8[ZIP]EngineVersion=0DATVersion=5127FileName=dat-5127.zipFilePath=/pub/antivirus/datfiles/4.x/ FileSize=13481555Checksum=6037,021EMD5=aaeb519d3f276b810d46642d782d8921那就可以通过下⾯这些代码得到MD5的值,简单吧1 2 3 4 5 6 7#!/usr/bin/env python# -*- coding: utf-8 -*-import ConfigParserconfig =ConfigParser.ConfigParser() config.readfp(open('update.ini'))a =config.get("ZIP","MD5")print a写也很简单:1 2 3 4 5 6 7 8 9 10import ConfigParserconfig =ConfigParser.ConfigParser()# set a number of parametersconfig.add_section("book")config.set("book", "title", "the python standard library") config.set("book", "author", "fredrik lundh")config.add_section("ematter")config.set("ematter", "pages", 250)# write to fileconfig.write(open('1.ini', "w"))修改也不难(添加内容):1 2 3 4 5 6 7 8#!/usr/bin/env python# -*- coding: utf-8 -*-import ConfigParserconfig =ConfigParser.ConfigParser()config.read('1.ini')a =config.add_section("md5")config.set("md5", "value", "1234")config.write(open('1.ini', "r+")) #可以把r+改成其他⽅式,看看结果:)修改内容:1 2 3 4 5 6 7#!/usr/bin/env python# -*- coding: utf-8 -*-import ConfigParserconfig =ConfigParser.ConfigParser()config.read('1.ini')config.set("md5", "value", "kingsoft") #这样md5就从1234变成kingsoft了config.write(open('1.ini', "r+"))读写.ini⽂件的类from configparser import ConfigParserimport osfrom demo import settings # django项⽬的配置⽂件class ReadWriteConfFile(object):path = settings.BASE_DIR + os.sep + 'config.ini' # 可根据需要替换成⾃⼰的路径 @staticmethoddef get_parser():cf = ConfigParser()cf.read(ReadWriteConfFile.path, encoding='utf-8')return cf@staticmethoddef write_parser(cf):f = open(ReadWriteConfFile.path, "w", encoding='utf-8') cf.write(f)f.close()@staticmethoddef add_section(section):cf = ReadWriteConfFile.get_parser()all_sections = cf.sections()if section in all_sections:returnelse:cf.add_section(section)ReadWriteConfFile.write_parser(cf)@staticmethoddef get_option(section, key):cf = ReadWriteConfFile.get_parser()return cf.get(section, key)@staticmethoddef set_option(section, key, value):cf = ReadWriteConfFile.get_parser()cf.set(section, key, value)ReadWriteConfFile.write_parser(cf)if __name__ == '__main__':ReadWriteConfFile.add_section('messages')ReadWriteConfFile.set_option('messages', 'name', 'sophia') x = ReadWriteConfFile.get_option('messages', 'name')print(x)。

在C#中读写INI配置文件

在C#中读写INI配置文件

在C#中读写INI配置⽂件在作应⽤系统开发时,管理配置是必不可少的。

例如数据库服务器的配置、安装和更新配置等等。

由于Xml的兴起,现在的配置⽂件⼤都是以xml⽂档来存储。

⽐如Visual ⾃⾝的配置⽂件Mashine.config,的配置⽂件Web.Config,包括我在介绍Remoting中提到的配置⽂件,都是xml的格式。

传统的配置⽂件ini已有被xml⽂件逐步代替的趋势,但对于简单的配置,ini⽂件还是有⽤武之地的。

ini⽂件其实就是⼀个⽂本⽂件,它有固定的格式,节Section的名字⽤[]括起来,然后换⾏说明key的值:[section]key=value如数据库服务器配置⽂件:DBServer.ini[Server]Name=localhost[DB]Name=NorthWind[User]Name=sa在C#中,对配置⽂件的读写是通过API函数来完成的,代码很简单:using System;using System.Text;using System.IO;using System.Runtime.InteropServices;namespace PubOp{public class OperateIniFile{API函数声明读Ini⽂件写Ini⽂件}}简单说明以下⽅法WriteIniData()和ReadIniData()的参数。

Section参数、Key参数和IniFilePath不⽤再说,Value参数表明key的值,⽽这⾥的NoText对应API函数的def参数,它的值由⽤户指定,是当在配置⽂件中没有找到具体的Value时,就⽤NoText的值来代替。

C++INI文件

C++INI文件

C++INI⽂件C++ INI⽂件 INI⽂件多⽤于存储程序的初始化信息。

例如,记录程序连接数据库的名称、上⼀次⽤户登录的名称、⽤户的注册信息等。

⼀. INI ⽂件格式[Section1 Name]KeyName1=value1KeyName2=value2...... ......[Section2 Name]KeyName1=value1KeyName2=value2 Section:节名;KeyName:键名;value:键值。

对于⼀个INI⽂件,可以有多个节,每个节可以包含多个键。

⼆.读写INI⽂件1. GetPrivateProfileInt - 从INI⽂件的指定Section 指定key 的整数值GetPrivateProfileInt(LPCTSTR lpAppName, // 指向包含 Section 名称的字符串地址LPCTSTR lpKeyName, // 指向包含 Key 名称的字符串地址INT nDefault // 如果 Key 值没有找到,则返回缺省的值是多少LPCTSTR lpFileName // ini ⽂件的⽂件名);2. GetPrivateProfileString - 从INI⽂件的指定Section 指定key 的串值GetPrivateProfileString(LPCTSTR lpAppName, // 指向包含 Section 名称的字符串地址LPCTSTR lpKeyName, // 指向包含 Key 名称的字符串地址LPCTSTR lpDefault, // 如果 Key 值没有找到,则返回缺省的字符串的地址LPTSTR lpReturnedString, // 返回字符串的缓冲区地址DWORD nSize // 缓冲区的长度LPCTSTR lpFileName // ini ⽂件的⽂件名);3. GetPrivateProfileSection - 从INI⽂件中读出指定Section 的内容GetPrivateProfileSection(LPCTSTR lpAppName, // 指向包含 Section 名称的字符串地址LPTSTR lpReturnedString, // 返回数据的缓冲区地址DWORD nSize // 返回数据的缓冲区长度LPCTSTR lpFileName // ini ⽂件的⽂件名);4. GetPrivateProfileSectionNames - 从INI⽂件中获得所有Section信息GetPrivateProfileSectionNames(LPTSTR lpszReturnBuffer, // 返回数据的缓冲区地址DWORD nSize // 返回数据的缓冲区长度LPCTSTR lpFileName // ini ⽂件的⽂件名);5. WritePrivateProfileSection - 将整个Section 的内容写⼊INI⽂件的指定Section中WritePrivateProfileSection(LPCTSTR lpAppName, // 指向包含 Section 名称的字符串地址LPCTSTR lpString // 要写⼊的数据的地址LPCTSTR lpFileName // ini ⽂件的⽂件名);6. WritePrivateProfileString - 将指定Key的串值写⼊INI⽂件的指定Section中WritePrivateProfileString(LPCTSTR lpAppName, // 指向包含 Section 名称的字符串地址LPCTSTR lpKeyName, // 指向包含 Key 名称的字符串地址LPCTSTR lpString // 要写的字符串地址LPCTSTR lpFileName // ini ⽂件的⽂件名);三.应⽤ 在我们实际使⽤的时候,⽤的最多的是GetPrivateProfileString和WritePrivateProfileString,但在对⾃定义INI⽂件操作的时候要注意的是,如果lpFileName指定的⽂件不包含路径信息,API将默认为Windows 的安装⽬录⽽不是系统当前路径,⽐较⽅便的⽅法是使⽤.\ xxx.ini 作为⽂件名称指⽰API操作对象为当前路径下的xxx.ini⽂件。

Delphi读写ini文件详解

Delphi读写ini文件详解

Delphi读写ini文件详解1.Delphi读写ini文件需要引用'IniFiles'单元2.定义变量:VarFilename:string;myinifile:Tinifile;3.变量附值Filename:=ExtractFilePath(Paramstr(0))+'program.ini';//指明路径.如果不指明路径.文件将在windows目录建立myinifile:=Tinifile.Create(Filename);//Create('program.ini');4.写入文件myinifile.writestring(小节名,关键字,变量或者字符串值);myinifile.writeinteger(小节名,关键字,变量或者整数数值);myinifile.writenbool(小节名,关键字,变量或者True/False);如果ini文件不存在的时候.会自动创建该ini文件5.删除关键字myinifile.DeleteKey(小节名,关键字);6.删除小节myinifile.EraseSection(小节名);7.释放变量myinifile.distory;8.其他Tinifile类还提供了3种对象方法来操作ini文件①myinifile.readsection(小节名,TStrings变量);可将指定小节中的所有关键字名读取至一个字符串列表变量中;②myinifile.readsections(TStrings变量);可将INI文件中所有小节名读取至一个字符串列表变量中去.③myinifile.readsectionvalues(小节名,TStrings变量);可将INI文件中指定小节的所有行(包括关键字、=、值)读取至一个字符串列表变量中去.9. delphi读写ini文件实例//--两个过程,主要实现:窗体关闭的时候,文件保存界面信息;窗体创建的时候,程序读取文件文件保存的信息。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

INI文件读写.txt男人的话就像老太太的牙齿,有多少是真的?!问:你喜欢我哪一点?答:我喜欢你离我远一点!执子之手,方知子丑,泪流满面,子不走我走。

诸葛亮出山前,也没带过兵!凭啥我就要工作经验?INI文件读写文章指数:0 CSDN Blog推出文章指数概念,文章指数是对Blog文章综合评分后推算出的,综合评分项分别是该文章的点击量,回复次数,被网摘收录数量,文章长度和文章类型;满分100,每月更新一次。

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, // 同上LPCTSTR lpKeyName, // 同上LPCTSTR lpString, // 同上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系列的语言中,转义字符'\\'表示反斜线'\'。

另外,当使用相对路径时,\\前的.号不能丢掉了。

二、从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 // 若指定的键名不存在,该值作为读取的默认值)如使用以下语句写入了年龄信息:::WriteProfileString("Test","age","25");//在win.ini中创建一个Test节,并在该节中创建一个键age,其值为25则可用以下语句读取age键的值:int age;age=::GetProfileInt("Test","age",0);2、从自己的ini文件中读取信息(1) 读取字符串DWORD GetPrivateProfileString(LPCTSTR lpAppName, // 同1(1)LPCTSTR lpKeyName, // 同1(1)LPCTSTR lpDefault, // 同1(1)LPTSTR lpReturnedString, // 同1(1)DWORD nSize, // 同1(1)LPCTSTR lpFileName // 读取信息的文件名。

若该ini文件与程序在同一个目录下,也可使用相//对路径,否则需要给出绝度路径。

)如:CString str;::GetPrivateProfileString("Test","id","Error",str.GetBuffer(20),20,".\\ex1.ini");或:::GetPrivateProfileString("Test","id","Error",str.GetBuffer(20),20,"d:\\vc\\Ex1\\ex1.ini");(2) 读取整数UINT GetPrivateProfileInt(LPCTSTR lpAppName, // 同上LPCTSTR lpKeyName, // 同上INT nDefault, // 若指定的键名不存在,该值作为读取的默认值LPCTSTR lpFileName // 同上)如使用以下语句写入了年龄信息:::WritePrivateProfileString("Test","age","25",".\\ex1.ini");//在ex1.ini中创建一个Test节,并在该节中创建一个键age,其值为25则可用以下语句读取age键的值:int age;age=::GetPrivateProfileInt("Test","age",0,".\\ex1.ini");三、删除键值或节回顾一下WriteProfileString函数的说明BOOL WriteProfileString(LPCTSTR lpAppName, // 节的名字,是一个以0结束的字符串LPCTSTR lpKeyName, // 键的名字,是一个以0结束的字符串。

若为NULL,则删除整个节LPCTSTR lpString // 键的值,是一个以0结束的字符串。

若为NULL,则删除对应的键)由此可见,要删除某个节,只需要将WriteProfileString第二个参数设为NULL即可。

而要删除某个键,则只需要将该函数的第三个参数设为 NULL即可。

这是删除系统的win.ini 中的节或键,类似的,要删除自己定义的ini文件中的节或键,也可做相同的操作。

如:::WriteProfileString("Test",NULL,NULL); //删除win.ini中的Test节::WriteProfileString("Test","id",NULL); //删除win.ini中的id键::WritePrivateProfileString("Test",NULL,NULL,".\\ex1.ini"); //删除ex1.ini 中的Test节::WritePrivateProfileString("Test","id",NULL,".\\ex1.ini"); //删除ex1.ini中的id键四、如何判断一个ini文件中有多少个节要判断一个ini文件中有多少个节,最简单的办法就是将所有的节名都找出来,然后统计节名的个数。

而要将所有的节名找出来,使用GetPrivateProfileSectionNames函数就可以了,其原型如下:DWORD GetPrivateProfileSectionNames(LPTSTR lpszReturnBuffer, // 指向一个缓冲区,用来保存返回的所有节名DWORD nSize, // 参数lpszReturnBuffer的大小LPCTSTR lpFileName // 文件名,若该ini文件与程序在同一个目录下,//也可使用相对路径,否则需要给出绝度路径)下面的是用来统计一个ini文件中共有多少个节的函数,当然,如果需要同时找到每个节中的各个键及其值,根据找到节名就可以很容易的得到了。

/*统计共有多少个节节名的分离方法:若chSectionNames数组的第一字符是'\0'字符,则表明有0个节。

否则,从chSectionNames数组的第一个字符开始,顺序往后找,直到找到一个'\0'字符,若该字符的后继字符不是 '\0'字符,则表明前面的字符组成一个节名。

若连续找到两个'\0'字符,则统计结束*/int CTestDlg::CalcCount(void){TCHAR chSectionNames[2048]={0}; //所有节名组成的字符数组char * pSectionName; //保存找到的某个节名字符串的首地址int i; //i指向数组chSectionNames的某个位置,从0开始,顺序后移int j=0; //j用来保存下一个节名字符串的首地址相对于当前i的位置偏移量int count=0; //统计节的个数//CString name;//char id[20];::GetPrivateProfileSectionNames(chSectionNames,2048,".\\ex1.ini");for(i=0;i<2048;i++,j++){if(chSectionNames[0]=='\0')break; //如果第一个字符就是0,则说明ini中一个节也没有if(chSectionNames[i]=='\0'){pSectionName=&chSectionNames[i-j]; //找到一个0,则说明从这个字符往前,减。

相关文档
最新文档