c# api读写ini配置文件的类
本文导语: ini就是扩展名为"ini"的文件,其实他本身是个文本文件,可以用记事本打工,主要存放的是用户所做的选择或系统的各种参数. ini文件其实并不是普通的文本文件.它有自己的结构.由若干段落(section)组成,在每个带括号的标题下面,是...
ini就是扩展名为"ini"的文件,其实他本身是个文本文件,可以用记事本打工,主要存放的是用户所做的选择或系统的各种参数.
ini文件其实并不是普通的文本文件.它有自己的结构.由若干段落(section)组成,在每个带括号的标题下面,是若干个以单个单词开头的关键字(keyword)和一个等号,等号右边就是关键字的值(value).
例如:
keyword1 = value1
keyword2 = value2
...
[section2]
keyword3 = value3
keyword4 = value4
c#命名空间中没有直接读写ini的类,当然如果你把int当成文本文件用system.io类来读写算我没说.
我现在介绍的是系统处理ini的方法.
虽然c#中没有,但是在"kernel32.dll"这个文件中有win32的api函数--writeprivateprofilestring()和getprivateprofilestring()
c#声明ini文件的写操作函数writeprivateprofilestring():
[dllimport( "kernel32" )]
private static extern long writeprivateprofilestring ( string section ,string key , string val
, string filepath ) ;
参数说明:section:ini文件中的段落;key:ini文件中的关键字;val:ini文件中关键字的数值;filepath:ini文件的完整的路径和名称。
c#申明ini文件的读操作函数getprivateprofilestring():
private static extern int getprivateprofilestring ( string section ,
string key , string def , stringbuilder retval ,
int size , string filepath ) ;
参数说明:section:ini文件中的段落名称;
key:ini文件中的关键字;
def:无法读取时候时候的缺省数值;
retval:读取数值;
size:数值的大小;
filepath:ini文件的完整路径和名称。
一个读写ini文件的类:
{ // www.
public string inipath;
[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);
///
/// 构造方法
///
/// 文件路径
public iniclass(string inipath)
{
inipath = inipath;
}
///
/// 写入ini文件
///
/// 项目名称(如 [typename] )
/// 键
/// 值
public void iniwritevalue(string section,string key,string value)
{
writeprivateprofilestring(section,key,value,this.inipath);
}
///
/// 读出ini文件
///
/// 项目名称(如 [typename] )
/// 键
public string inireadvalue(string section,string key)
{
stringbuilder temp = new stringbuilder(500);
int i = getprivateprofilestring(section,key,"",temp,500,this.inipath);
return temp.tostring();
}
///
/// 验证文件是否存在
///
/// 布尔值
public bool existinifile()
{
return file.exists(inipath);
}
}