ini就是扩展名为"ini"的文件,其实他本身是个文本文件,可以用记事本打工,主要存放的是用户所做的选择或系统的各种参数.
ini文件其实并不是普通的文本文件.它有自己的结构.由若干段落(section)组成,在每个带括号的标题下面,是若干个以单个单词开头的关键字(keyword)和一个等号,等号右边就是关键字的值(value).
例如:
复制代码 代码示例:
[section1]
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():
[dllimport("kernel32")]
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文件的类:
复制代码 代码示例:
public class iniclass
{ // www.jb200.com
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);
/// <summary>
/// 构造方法
/// </summary>
/// <param name="inipath">
文件路径</param>
public iniclass(string inipath)
{
inipath = inipath;
}
/// <summary>
/// 写入ini文件
/// </summary>
/// <param name="section">项目名称(如 [typename] )</param>
/// <param name="key">键</param>
/// <param name="value">值</param>
public void iniwritevalue(string section,string key,string value)
{
writeprivateprofilestring(section,key,value,this.inipath);
}
/// <summary>
/// 读出ini文件
/// </summary>
/// <param name="section">项目名称(如 [typename] )</param>
/// <param name="key">键</param>
public string inireadvalue(string section,string key)
{
stringbuilder temp = new stringbuilder(500);
int i = getprivateprofilestring(section,key,"",temp,500,this.inipath);
return temp.tostring();
}
/// <summary>
/// 验证文件是否存在
/// </summary>
/// <returns>布尔值</returns>
public bool existinifile()
{
return file.exists(inipath);
}
}